Spec-Zone.ru › JavaScript

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

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-get-regexp.prototype.unicode

Совместимость с браузерами

Десктоп Мобильные Сервер
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.lastIndex
  • RegExp.prototype.dotAll
  • RegExp.prototype.global
  • RegExp.prototype.hasIndices
  • RegExp.prototype.ignoreCase
  • RegExp.prototype.multiline
  • RegExp.prototype.source
  • RegExp.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API