字元轉義:\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 |
瀏覽器相容性
載入中…