Создание регулярного выражения JavaScript, эквивалентного регулярному выражению PHP
-
09-06-2019 - |
Вопрос
После отправки моей веб-формы к пользовательскому вводу на стороне сервера будет применено регулярное выражение (через PHP).Я хотел бы, чтобы идентичное регулярное выражение работало в режиме реального времени на стороне клиента, чтобы показать пользователю, каким будет реальный ввод.Это будет почти то же самое, что и раздел «Предварительный просмотр» на страницах «Задать вопрос» в Stack Overflow, за исключением того, что на серверной стороне используется PHP вместо .NET.
Что мне нужно иметь в виду, чтобы мои регулярные выражения PHP и JavaScript действовали одинаково?
Решение
Хе-хе, об этом спрашивали несколько минут назад, и Джефф заметил:
http://www.regular-expressions.info/refflavors.html.
Проводится сравнение возможностей регулярных выражений в разных инструментах и языках.
Другие советы
Если регулярные выражения просты, проблем не должно возникнуть, поскольку основы регулярных выражений являются общими для большинства реализаций.
Для подробностей было бы лучше изучить обе реализации:
http://www.regular-expressions.info/php.html
http://www.regular-expressions.info/javascript.html
Реализация Javascripts, вероятно, является более простой, поэтому, если вы ищете подход с наименьшим общим знаменателем, стремитесь к нему.
Я обнаружил, что разные реализации регулярных выражений часто имеют небольшие различия в том, что именно они поддерживают.Если вы хотите быть полностью уверены, что результат будет одинаковым как во внешнем, так и во внутреннем интерфейсе, самым безопасным вариантом будет сделать вызов Ajax к вашему серверу PHP и использовать один и тот же фрагмент PHP-кода для обеих оценок регулярных выражений.
@LKM AJAX здесь явный победитель.Это также позволит вам следить за СУХОЙ принцип.Почему вы хотите написать свой код синтаксического анализа на Javascript? и PHP?
И регулярное выражение JavaScript, и preg_match PHP основаны на Perl, поэтому проблем с переносом возникнуть не должно.Однако обратите внимание, что Javascript поддерживает только подмножество модификаторов, которые поддерживает Perl.
Для получения дополнительной информации для сравнения двух:
Что касается способа доставки, я бы посоветовал вам использовать JSON, самый тонкий формат обмена данными на сегодняшний день (AFAIK), который можно напрямую преобразовать в объект JavaScript с помощью eval().Просто пропусти этого плохого парня через АЯКС сеанс, и вы должны быть готовы к работе.
Надеюсь, это поможет :)