字符转义:\n, \u{...}

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

字符转义表示一个可能无法以其字面形式方便地表示的字符。

语法

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

\xHH
\uHHHH
\u{HHH}

注意: , 不属于语法的一部分。

参数

HHH

一个十六进制数,表示字符的 Unicode 码点。\xHH 形式必须有两位十六进制数字;\uHHHH 形式必须有四位;\u{HHH} 形式可以有 1 到 6 位十六进制数字。

描述

正则表达式中识别以下字符转义

\f, \n, \r, \t, \v

字符串字面量中的相同,除了 \b,它在正则表达式中表示单词边界,除非在字符类中。

\c 后跟一个从 AZ 或从 az 的字母

表示一个控制字符,其值等于该字母的字符值模 32。例如,\cJ 表示换行符 (\n),因为 J 的码点是 74,而 74 模 32 是 10,也就是换行符的码点。因为大写字母和小写字母相差 32,所以 \cJ\cj 是等价的。你可以用这种形式表示 1 到 26 的控制字符。

\0

表示 U+0000 NUL 字符。不能后跟数字(否则它会成为遗留的八进制转义序列)。

\^, \$, \\, \. \*, \+, \?, \(, \), \[, \], \{, \}, \|, \/

表示字符本身。例如,\\ 表示反斜杠,\( 表示左括号。这些在正则表达式中是语法字符/ 是正则表达式字面量的分隔符),因此除非在字符类中,否则它们需要转义。

\xHH

表示具有给定十六进制 Unicode 码点的字符。十六进制数必须正好是两位长。

\uHHHH

表示具有给定十六进制 Unicode 码点的字符。十六进制数必须正好是四位长。在支持 Unicode 模式下,两个这样的转义序列可以用来表示一个代理对。(在不支持 Unicode 模式下,它们始终是两个独立的字符。)

\u{HHH}

(仅限支持 Unicode 模式)表示具有给定十六进制 Unicode 码点的字符。十六进制数可以是 1 到 6 位长。

不支持 Unicode 模式下,不是上述形式的转义序列会变成标识转义:它们表示反斜杠后面的字符。例如,\a 表示字符 a。这种行为限制了引入新转义序列而不会导致向后兼容性问题的能力,因此在支持 Unicode 模式下是禁止的。

在不支持 Unicode 模式下,]{} 可能会字面出现,如果它们不能被解析为字符类或量词分隔符的结尾。这是一种用于 Web 兼容性的废弃语法,你不应依赖它。

在不支持 Unicode 模式下,字符类中形式为 \cX 的转义序列(其中 X 是数字或 _)的解码方式与ASCII 字母的解码方式相同:\c0\cP 模 32 后相同。此外,如果在任何地方遇到形式为 \cXX 不是已识别字符的转义序列,则反斜杠被视为字面字符。这些语法也已废弃。

js
/[\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)

示例

使用字符转义

当你想要匹配一个不容易以其字面形式表示的字符时,字符转义会很有用。例如,你不能在正则表达式字面量中字面地使用换行符,所以你必须使用字符转义

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

规范

规范
ECMAScript® 2026 语言规范
# prod-CharacterEscape

浏览器兼容性

另见