Javascript Ошибка RegExp - PullRequest
1 голос
/ 27 мая 2020

У меня есть регулярное выражение: [a-z]{, которое является допустимым выражением согласно Javascript's RegExp.

Но если я изменю его на: [a-z]( Это недопустимое выражение. Мне нужно экранировать "(", чтобы он работал.

Почему "{" работает без экранирования? Есть ли способ заставить Javascript вернуть его как недопустимое выражение?

1 Ответ

4 голосов
/ 27 мая 2020

Несоответствующий { разрешен и интерпретируется как буквальный { для сопоставления, потому что этого требует спецификация. (Его нельзя изменить, потому что в противном случае существующие веб-сайты сломались бы, а спецификация поддерживает обратную совместимость по сравнению со всем остальным).

Но в более новых средах вы можете добавить флаг u unicode , который добавляет дополнительные требования и превращает простые { s, которые, вероятно, являются ошибками, в ошибки:

const re = /foo{/u;

Uncaught SyntaxError: Недопустимое регулярное выражение: / foo {/: Неполный квантификатор @ JS строка 1

(Есть различные другие варианты поведения , которые добавляет флаг u, но они, вероятно, не актуальны для большинства случаев использования)

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