字面字符:a、b
**字面字符**指定在输入文本中精确匹配自身。
语法
c
参数
c
-
不是下面描述的语法字符的单个字符。
描述
在正则表达式中,大多数字符可以按字面意思出现。它们通常是模式最基本的构建块。例如,以下是从 删除 HTML 标记 示例中获取的模式
const pattern = /<.+?>/g;
在此示例中,.
、+
和 ?
被称为语法字符。它们在正则表达式中具有特殊含义。模式中的其余字符(<
和 >
)是字面字符。它们在输入文本中匹配自身:左角括号和右角括号。
以下字符是正则表达式中的语法字符,它们不能作为字面字符出现
在字符类中,更多字符可以按字面意思出现。有关更多信息,请参阅 字符类 页面。例如,\.
和 [.]
都匹配字面量 .
。但是,在 v
模式字符类 中,有一组不同的字符被保留为语法字符。为了全面起见,下表列出了 ASCII 字符以及它们是否可以在不同上下文中以转义或未转义的形式出现,其中“✅”表示字符表示自身,“❌”表示它会引发语法错误,“⚠️”表示字符有效,但含义与其自身不同。
字符 | 在 u 或 v 模式下字符类外部 |
在 u 模式字符类中 |
在 v 模式字符类中 |
|||
---|---|---|---|---|---|---|
未转义 | 转义 | 未转义 | 转义 | 未转义 | 转义 | |
123456789 "' |
✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
!#%&,:;<=>@`~ |
✅ | ❌ | ✅ | ❌ | ✅ | ✅ |
] |
❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
()[{} |
❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
*+? |
❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
/ |
✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
0DSWbdfnrstvw |
✅ | ⚠️ | ✅ | ⚠️ | ✅ | ⚠️ |
B |
✅ | ⚠️ | ✅ | ❌ | ✅ | ❌ |
$. |
⚠️ | ✅ | ✅ | ✅ | ✅ | ✅ |
| |
⚠️ | ✅ | ✅ | ✅ | ❌ | ✅ |
- |
✅ | ❌ | ✅⚠️ | ✅ | ❌⚠️ | ✅ |
^ |
⚠️ | ✅ | ✅⚠️ | ✅ | ✅⚠️ | ✅ |
\ |
❌⚠️ | ✅ | ❌⚠️ | ✅ | ❌⚠️ | ✅ |
注意:在 v
模式字符类中既可以转义又可以不转义的字符恰好是被禁止作为“双标点符号”的字符。有关更多信息,请参阅 v
模式字符类。
每当您想要按字面意思匹配语法字符时,都需要使用反斜杠 (\
) 对其进行 转义。例如,要在模式中匹配字面量 *
,您需要在模式中编写 \*
。将语法字符用作字面字符会导致意外结果或导致语法错误——例如,/*/
不是有效的正则表达式,因为量词前面没有模式。在 Unicode 感知模式 中,]
、{
和 }
可以按字面意思出现,如果无法将它们解析为字符类或量词分隔符的结尾。这是一种 用于 Web 兼容性的已弃用语法,您不应该依赖它。
正则表达式字面量不能使用某些非语法字面字符指定。/
不能作为正则表达式字面量中的字面字符出现,因为 /
用作字面量本身的分隔符。如果要匹配字面量 /
,则需要将其转义为 \/
。换行符也不能作为正则表达式字面量中的字面字符出现,因为字面量不能跨多行。您需要改为使用 字符转义,如 \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 语言规范 # prod-PatternCharacter |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。