Регулярное выражение Unicode \ p {L} не работает в NodeJS - PullRequest
2 голосов
/ 08 марта 2020

Я пытаюсь заставить работать следующее регулярное выражение Юникода в nodejs, но все, что я получаю, это недопустимая ошибка escape. Я не могу понять, что здесь убежать или если это по какой-то причине вообще не работает в узле. Это мое оригинальное регулярное выражение:

/([\p{L}|\-]+)/ug

Если я выберу \ p как \\p, регулярное выражение больше не будет работать (выводит только p, L и -)

Это работает в chrome, так что он должен работать в узле как-то тоже, верно? Спасибо за вашу помощь.

var str = "thÛs Ís spå-rtÅ!";

console.log(str.match(/([\p{L}|\-]+)/ug))

1 Ответ

4 голосов
/ 08 марта 2020

Быстрый просмотр журнала изменений nodejs выявил этот PR:

https://github.com/nodejs/node/pull/19052

, что наиболее заметно гласит:

Исключения свойства Unicode RegExp находятся на этапе 4 и будут включены в ES2018. Они доступны начиная с V8 6.4 без флага, поэтому они будут разблокированы в Node.js v10. Они также доступны под флагом --harmony_regexp_property в Node.js v6-v9 и под флагом --harmony в Node.js v8-v9.

Так что, если вы находятся на узле v6-v9, вы можете включить эту функцию, запустив node с флагом. Например, это работает для меня на узле v8.11.3:

node --harmony regex-test.js

(где regex-test.js содержит ваш пример кода). Выполнение этого без флага дает ошибку Invalid escape.

Если вы можете обновить версию своего узла до v10 +, флаг не нужен.

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