字面字元:a, b
字面量字元精確地指定了自身,用於在輸入文字中進行匹配。
語法
c
引數
c-
單個字元,且不是下述的語法字元。
描述
在正則表示式中,大多數字符都可以以字面量形式出現。它們通常是模式中最基本的構建塊。例如,以下是刪除 HTML 標籤示例中的一個模式:
const pattern = /<.+?>/g;
在這個例子中,.、+ 和 ? 被稱為語法字元。它們在正則表示式中具有特殊含義。模式中的其餘字元(< 和 >)是字面量字元。它們在輸入文字中匹配自身:左尖括號和右尖括號。
以下字元是正則表示式中的語法字元,它們不能以字面量字元的形式出現:
在字元類中,更多字元可以以字面量形式出現。欲瞭解更多資訊,請參閱字元類頁面。例如,\. 和 [.] 都匹配字面量 .。然而,在 v 模式字元類中,有一組不同的字元被保留為語法字元。為了最全面地說明,下表列出了 ASCII 字元以及它們在不同上下文中是否可以轉義或不轉義地出現,“✅”表示該字元表示其自身,“❌”表示它會丟擲語法錯誤,“⚠️”表示該字元有效但表示的不是其自身。
| 字元 | 在 u 或 v 模式下,字元類之外 |
在 u 模式字元類中 |
在 v 模式字元類中 |
|||
|---|---|---|---|---|---|---|
| 未轉義 | 已轉義 | 未轉義 | 已轉義 | 未轉義 | 已轉義 | |
123456789 "' |
✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
!#%&,:;<=>@`~ |
✅ | ❌ | ✅ | ❌ | ✅ | ✅ |
] |
❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
()[{} |
❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
*+? |
❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
/ |
✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
0DSWbdfnrstvw |
✅ | ⚠️ | ✅ | ⚠️ | ✅ | ⚠️ |
B |
✅ | ⚠️ | ✅ | ❌ | ✅ | ❌ |
$. |
⚠️ | ✅ | ✅ | ✅ | ✅ | ✅ |
| |
⚠️ | ✅ | ✅ | ✅ | ❌ | ✅ |
- |
✅ | ❌ | ✅⚠️ | ✅ | ❌⚠️ | ✅ |
^ |
⚠️ | ✅ | ✅⚠️ | ✅ | ✅⚠️ | ✅ |
\ |
❌⚠️ | ✅ | ❌⚠️ | ✅ | ❌⚠️ | ✅ |
注意:在 v 模式字元類中,既可以轉義又可以不轉義的字元恰好是那些被禁止作為“雙標點符號”的字元。有關更多資訊,請參閱v 模式字元類。
每當你想字面量匹配一個語法字元時,你需要用反斜槓 (\) 轉義它。例如,要在模式中匹配字面量 *,你需要在模式中寫成 \*。將語法字元用作字面量字元會導致意外結果或引起語法錯誤——例如,/*/ 不是有效的正則表示式,因為量詞前面沒有模式。在非 Unicode 模式下,如果 ]、{ 和 } 不可能被解析為字元類或量詞分隔符的結束,它們可以字面量出現。這是一種為了網路相容性而廢棄的語法,你不應該依賴它。
正則表示式字面量不能用某些非語法字面量字元指定。/ 不能作為字面量字元出現在正則表示式字面量中,因為 / 被用作字面量本身的分隔符。如果你想匹配字面量 /,你需要將其轉義為 \/。行終止符也不能作為字面量字元出現在正則表示式字面量中,因為字面量不能跨越多行。你需要使用字元轉義,例如 \n。使用 RegExp() 建構函式時沒有這些限制,儘管字串字面量有其自身的轉義規則(例如,"\\" 實際上表示單個反斜槓字元,因此 new RegExp("\\*") 和 /\*/ 是等效的)。
在非 Unicode 模式下,模式被解釋為 UTF-16 碼元序列。這意味著代理對實際上表示兩個字面量字元。這在與其他特性結合使用時會導致意外行為:
/^[😄]$/.test("😄"); // false, because the pattern is interpreted as /^[\ud83d\udc04]$/
/^😄+$/.test("😄😄"); // false, because the pattern is interpreted as /^\ud83d\udc04+$/
在 Unicode 模式下,模式被解釋為 Unicode 碼點序列,代理對不會被拆分。因此,你應該始終優先使用 u 標誌。
示例
使用字面量字元
以下示例複製自字元轉義。字元 a 和 b 是模式中的字面量字元,而 \n 是跳脫字元,因為它不能以字面量形式出現在正則表示式字面量中。
const pattern = /a\nb/;
const string = `a
b`;
console.log(pattern.test(string)); // true
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # prod-PatternCharacter |
瀏覽器相容性
載入中…