Javascript regex по сравнению с регулярным выражением Perl
Я просто noob, когда дело доходит до regexp. Я знаю, что Perl поражает регулярным выражением, и я не знаю много Perl. Недавно началось изучение JavaScript и появилось регулярное выражение для
проверка пользовательских входов... не использовала их много.
Как JavaScript regexp сравнивается с Perl regexp? Сходства и различия?
Могут ли все регулярные выражения, написанные в JS, использоваться в Perl и наоборот?
Аналогичный синтаксис?
Ответы
Ответ 1
Начиная с ECMAScript 2018 года, многие из недостатков регулярных выражений JavaScript были исправлены.
Чего еще не хватает:
- В JavaScript нет способа предотвратить обратный отслеживание путем окончательного сопоставления (с помощью притяжательных квантификаторов
++
/*+
/?+
или атомарных групп (?>...)
).
- Рекурсивное/сбалансированное сопоставление подгрупп не поддерживается.
- Еще одна (косметическая) вещь заключается в том, что JavaScript не знает подробных регулярных выражений, что может затруднить их чтение.
Кроме этого, основной синтаксис регулярных выражений очень похож в обоих вариантах.
Ответ 2
Этот comparison
ответит на все ваши вопросы.
Ответ 3
Другое отличие: в JavaScript нет модификатора s
: точка "." никогда не будет соответствовать символу новой строки. В качестве замены для символа "." Класс символов [\s\S]
может использоваться в JavaScript, который будет работать как /./s
в Perl.
Ответ 4
Я только что натолкнулся на случай, когда десятичное число \d не распознается в некоторых версиях JavaScript - вы должны использовать [0-9].