Символьные экраны: \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
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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