Почему экранирование свойств Unicode вызывает ошибки неизвестного свойства?

веб-сайт MDN содержит примеры сопоставления шаблонов. с поддержкой юникода, например.

const sentence = 'A ticket to 大阪 costs ¥2000 ????.';
const regexpCurrencyOrPunctuation = /\p{Sc}|\p{P}/gu;
console.log(sentence.match(regexpCurrencyOrPunctuation));

Он отлично работает в stackoverflow как фрагмент.

Однако в javascript codeandbox код выдает ошибку:

/src/index.js: Неизвестное свойство: Sc

В Next.js codeandbox также выдает ту же ошибку.

С другой стороны, на веб-сайте regex101 шаблон правильно сопоставляется с предложением, с ароматом ECMAScript и с флагом gu.

Кроме того, в моем реальном проекте Next.js Typescript шаблон /\P{L}/gu работал нормально до вчерашнего дня, когда я обновил все зависимости до последних версий. Теперь он выдает аналогичную ошибку с режимом strict, установленным в true в tsconfig.json. Если для режима strict установлено значение false, он по-прежнему работает нормально.

Почему возникает эта ошибка и как использовать шаблон регулярного выражения /\p{Sc}|\p{P}/gu или /\P{L}/gu в коде?


person camcam    schedule 08.04.2021    source источник


Ответы (1)


Согласно документации, Sc является небинарным< /em> свойство. Это означает, что вы не можете просто использовать \p{Sc}; вы должны использовать \p{Sc=some_script_name}, где имя скрипта взято из здесь.

person Mark Reed    schedule 08.04.2021