Регулярное выражение Javascript по сравнению с регулярным выражением Perl - PullRequest
36 голосов
/ 16 октября 2010

Я просто нуб, когда дело доходит до регулярного выражения.Я знаю, что Perl великолепен с регулярным выражением, и я не знаю много Perl.Недавно начал изучать JavaScript и натолкнулся на регулярные выражения для проверки пользовательских входных данных ... мало использовал их.

Как регулярное выражение JavaScript сравнивается с регулярным выражением Perl?Сходства и различия?
Могут ли все регулярные выражения, написанные на JS, использоваться в Perl и наоборот?
Аналогичный синтаксис?

Ответы [ 4 ]

26 голосов
/ 17 октября 2010

Начиная с ECMAScript 2018 года, многие из недостатков регулярных выражений в JavaScript были исправлены.

Чего по-прежнему не хватает:

  • В JavaScript нет способа предотвратить обратный отслеживание путем окончательного сопоставления совпадений (с использованием собственнических квантификаторов ++ / *+ / ?+ или атомных групп (?>...)).
  • Рекурсивное / сбалансированное сопоставление подгрупп не поддерживается.
  • Еще одна (косметическая) вещь заключается в том, что JavaScript не знает подробных регулярных выражений, что может затруднить их чтение.

Кроме этого, основной синтаксис регулярных выражений очень похож в обоих вариантах.

8 голосов
/ 16 октября 2010

Этот comparison ответит на все ваши вопросы.

5 голосов
/ 23 апреля 2013

Другое отличие: в JavaScript нет модификатора s: точка "."никогда не будет соответствовать символу новой строки.В качестве замены "." В JavaScript может использоваться класс символов [\s\S], который будет работать как /./s в Perl.

0 голосов
/ 14 мая 2018

Я только что натолкнулся на случай, когда десятичное число \ d не распознается в некоторых версиях JavaScript - вы должны использовать [0-9].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...