字符转义:\n, \u{...}
字符转义表示一个可能无法以其字面形式方便地表示的字符。
语法
\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\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{HHH}-
(仅限支持 Unicode 模式)表示具有给定十六进制 Unicode 码点的字符。十六进制数可以是 1 到 6 位长。
在不支持 Unicode 模式下,不是上述形式的转义序列会变成标识转义:它们表示反斜杠后面的字符。例如,\a 表示字符 a。这种行为限制了引入新转义序列而不会导致向后兼容性问题的能力,因此在支持 Unicode 模式下是禁止的。
在不支持 Unicode 模式下,]、{ 和 } 可能会字面出现,如果它们不能被解析为字符类或量词分隔符的结尾。这是一种用于 Web 兼容性的废弃语法,你不应依赖它。
在不支持 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® 2026 语言规范 # prod-CharacterEscape |
浏览器兼容性
加载中…