Карет (^), кажется, выходит за рамки прямого sla sh при использовании как «не» в Javascript регулярном выражении - PullRequest
2 голосов
/ 19 июня 2020

В данный момент я работаю над лексером javascript для побочного проекта, и при запуске его в тестовой кодовой базе я наткнулся на регулярное выражение, которое нашему лексеру не нравится:

/^(https?|ftp|tel|mailto):(\/\/|[^/])[^ ]+(\/|$)|^[^: ]+(\/|$)|^[\w.]+:\d+(\/|$)/

Проблема в том, что этот неэкранированный прямой sla sh здесь: [^/], который наш лексер интерпретирует как терминатор для литерала регулярного выражения.

Я тестировал это в node и chrome v8, и это кажется допустимым синтаксисом. Однако я не могу найти никакой документации, чтобы заявить, что использование каретки ^ как NOT в регулярном выражении javascript также функционирует как escape-символ для прямого sla sh /.

Может ли кто-нибудь помочь мне найти здесь документацию или официальное объяснение правил?

...