RegExp.prototype.unicode
Baseline Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Аксессорная собственность unicode экземпляров RegExp возвращает, используется ли флаг u с этим регулярным выражением.
Попробуйте
const regex1 = /\u{61}/;
const regex2 = /\u{61}/u;
console.log(regex1.unicode);
// Expected output: false
console.log(regex2.unicode);
// Expected output: true
Описание
RegExp.prototype.unicode имеет значение true, если был использован флаг u; в противном случае false. Флаг u включает различные функции, связанные с Unicode. С флагом "u":
- Любые экранирования кодовых точек Unicode (
\u{xxxx},\p{UnicodePropertyValue}) будут интерпретироваться как таковые, а не как идентификаторы. Например,/\u{61}/uсоответствует"a", но/\u{61}/(без флагаu) соответствует"u".repeat(61), где\uэквивалентен однойu. -
Утверждения границ буфера (
\A,\z,\Z) будут интерпретироваться как таковые, а не как идентификаторы. - Субкодовые пары будут интерпретироваться как целые символы, а не как два отдельных символа. Например,
/[😄]/uбудет соответствовать только"😄", а не"\ud83d". - Когда
lastIndexавтоматически увеличивается (например, при вызовеexec()), Unicode-регулярные выражения продвигаются на кодовые точки Unicode, а не на кодовые единицы UTF-16.
Существуют другие изменения в поведении разбора, которые предотвращают возможные синтаксические ошибки (аналогичные строгому режиму для синтаксиса регулярных выражений). Эти синтаксические конструкции устарели и сохраняются только для совместимости с веб-сайтами, и вам не следует на них полагаться.
Сеттер для unicode является undefined. Вы не можете изменить это свойство напрямую.
Режим с учетом Unicode
Когда мы говорим о режиме с учетом Unicode, мы подразумеваем, что регулярное выражение имеет флаг u или флаг v, в этом случае регулярное выражение включает функции, связанные с Unicode (такие как экранирование классов символов Unicode) и имеет гораздо более строгие синтаксические правила. Поскольку u и v интерпретируют одно и то же регулярное выражение несовместимым образом, использование обоих флагов приводит к SyntaxError.
Аналогично, регулярное выражение является не учитывающим Unicode, если оно не имеет ни флага u, ни флага v. В этом случае регулярное выражение интерпретируется как последовательность кодовых единиц UTF-16, и существует множество устаревших синтаксических конструкций, которые не вызывают ошибок синтаксиса.
Примеры
Использование свойства unicode
const regex = /\u{61}/u;
console.log(regex.unicode); // true
Спецификации
Совместимость с браузерами
| Десктоп | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
unicode |
50 |
12Сгибание регистра реализовано в версии 13 |
46 |
37 |
10 |
50 |
46 |
37 |
10 |
5.0 |
50 |
10 |
1.0.0 |
1.0 |
6.0.0Сгибание регистра реализовано в версии 8.6.0 |
См. также
RegExp.prototype.lastIndexRegExp.prototype.dotAllRegExp.prototype.globalRegExp.prototype.hasIndicesRegExp.prototype.ignoreCaseRegExp.prototype.multilineRegExp.prototype.sourceRegExp.prototype.sticky
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode