Несоответствующий {
разрешен и интерпретируется как буквальный {
для сопоставления, потому что этого требует спецификация. (Его нельзя изменить, потому что в противном случае существующие веб-сайты сломались бы, а спецификация поддерживает обратную совместимость по сравнению со всем остальным).
Но в более новых средах вы можете добавить флаг u
unicode , который добавляет дополнительные требования и превращает простые {
s, которые, вероятно, являются ошибками, в ошибки:
const re = /foo{/u;
Uncaught SyntaxError: Недопустимое регулярное выражение: / foo {/: Неполный квантификатор @ JS строка 1
(Есть различные другие варианты поведения , которые добавляет флаг u
, но они, вероятно, не актуальны для большинства случаев использования)