Spec-Zone.ru › JavaScript

Символьные экраны: \n, \u{...}

Базовый уровень Широко доступен

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Символьный экран представляет символ, который может быть неудобно представлен в своей буквальной форме.

Синтаксис

\f, \n, \r, \t, \v
\cA, \cB, …, \cz
\0
\^, \$, \\, \., \*, \+, \?, \(, \), \[, \], \\{, \\}, \|, \/

\xHH
\uHHHH
\u{H…H}

Примечание: , не является частью синтаксиса.

Параметры

H…H
Шестнадцатеричное число, представляющее кодовую точку Unicode символа. Форма \xHH должна иметь две шестнадцатеричные цифры; форма \uHHHH должна иметь четыре; форма \u{H…H} может иметь от 1 до 6 шестнадцатеричных цифр.

Описание

В регулярных выражениях распознаются следующие символьные экраны:

\f, \n, \r, \t, \v
То же, что и в литералах строк, за исключением \b, который представляет границу слова в регулярных выражениях, если только он не находится в классе символов.
\c, за которой следует буква от A до Z или от a до z
Представляет управляющий символ со значением, равным значению буквы, деленному по модулю 32. Например, \cJ представляет перевод строки (\n), потому что кодовая точка J равна 74, а 74 по модулю 32 равно 10, что является кодовой точкой перевода строки. Поскольку заглавная буква и ее строчная форма отличаются на 32, \cJ и \cj эквивалентны. В этой форме можно представить управляющие символы от 1 до 26.
\0
Представляет символ U+0000 NUL. Не может сопровождаться цифрой (что делает его устаревшим восьмеричным экраном).
\^, \$, \\, \. \*, \+, \?, \(, \), \[, \], \\{, \\}, \|, \/
Представляет сам символ. Например, \\ представляет обратную косую черту, а \( представляет открывающую скобку. Это синтаксические символы в регулярных выражениях (/ — разделитель литерала регулярного выражения), поэтому они требуют экранирования, если только не находятся в классе символов.
\xHH
Представляет символ с указанной шестнадцатеричной кодовой точкой Unicode. Шестнадцатеричное число должно состоять ровно из двух цифр.
\uHHHH
Представляет символ с указанной шестнадцатеричной кодовой точкой Unicode. Шестнадцатеричное число должно состоять ровно из четырех цифр. Две таких экранирующих последовательности могут использоваться для представления суррогатной пары в режиме с учетом регистра Unicode. (В режиме без учета регистра Unicode это всегда два отдельных символа.)
\u{H…H}
(Только в режиме с учетом регистра Unicode) Представляет символ с указанной шестнадцатеричной кодовой точкой Unicode. Шестнадцатеричное число может содержать от 1 до 6 цифр.

В режиме без учета регистра Unicode экранирующие последовательности, не являющиеся одной из вышеперечисленных, становятся экранами идентичности: они представляют символ, следующий за обратной косой чертой. Например, \a представляет символ a. Такое поведение ограничивает возможность введения новых экранирующих последовательностей без создания проблем с обратной совместимостью, поэтому оно запрещено в режиме с учетом регистра Unicode.

В режиме без учета регистра Unicode ], { и } могут появляться буквально, если их невозможно разобрать как конец класса символов или разделителей квантификатора. Это устаревший синтаксис для веб-совместимости, и на него не следует полагаться.

В режиме без учета регистра Unicode экранирующие последовательности внутри классов символов вида \cX, где X — число или _, декодируются так же, как и с ASCII-буквами: \c0 эквивалентно \cP при делении по модулю 32. Кроме того, если форма \cX встречается где-либо, где X не является одним из распознанных символов, то обратная косая черта обрабатывается как буквальный символ. Эти синтаксисы также устарели.

/[\c0]/.test("\x10"); // true
/[\c_]/.test("\x1f"); // true
/[\c*]/.test("\\"); // true
/\c/.test("\\c"); // true
/\c0/.test("\\c0"); // true (the \c0 syntax is only supported in character classes)

Примеры

Использование символьных экранов

Символьные экраны полезны, когда вам нужно сопоставить символ, который нелегко представить в его буквальной форме. Например, вы не можете использовать перевод строки буквально в литерале регулярного выражения, поэтому вам нужно использовать символьный экран:

const pattern = /a\nb/;
const string = `a
b`;
console.log(pattern.test(string)); // true

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

Спецификация
ECMAScript® 2027 Language Specification
# prod-CharacterEscape

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

Настольные Мобильные Сервер
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
character_escape
1
12
1
5
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
unicode
50
12
46
37
10
50
46
37
10
5.0
50
10
1.0.0
1.0
6.0.0

См. также

  • Руководство по классам символов
  • Регулярные выражения
  • Класс символов: [...], [^...]
  • Экранирование класса символов: \d, \D, \w, \W, \s, \S
  • Буквальный символ: a, b
  • Экранирование класса символов Unicode: \p{...}, \P{...}
  • Обратная ссылка: \1, \2
  • Именованная обратная ссылка: \k<name>
  • Утверждение границы слова: \b, \B

© 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/Regular_expressions/Character_escape

Spec-Zone.ru

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