字面字符: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 |
浏览器兼容性
加载中…