需转义的元字符有. * + ? ^ $ ( ) [ ] { } | ;因字符串和正则双层解析,构造函数中反斜杠需写两个,字面量中只需一个。

JavaScript 正则表达式中,反斜杠 是转义字符,用于让原本有特殊含义的字符变成普通字面量,或让普通字符获得特殊含义(如 d 表示数字)。但要注意:**字符串字面量本身也把 当作转义符**,所以写正则时经常需要“双重转义”。
哪些字符需要加反斜杠才能匹配字面意思?
以下元字符在正则中有特殊功能,若想匹配它们本身(比如匹配一个点号 .、一个星号 *),必须用 转义:
-
.→ 写成.(否则匹配任意字符) -
*→*(否则表示“前一项重复零次或多次”) -
+→+ -
?→? -
^→^(否则表示行首) -
$→$(否则表示行尾) -
( )→( )(否则表示捕获分组) -
[ ]→[ ](否则表示字符类) -
{ }→{ }(否则表示量词) -
|→|(否则表示“或”) -
→\(要匹配一个反斜杠,得写两个)
为什么有时要写两个反斜杠 \?
因为 JavaScript 字符串解析器会先处理一次反斜杠。例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
"."→ 字符串实际只含一个.(.被当成转义序列,但.不是合法转义,部分环境会报错或静默忽略) -
"\."→ 字符串内容是.,传给RegExp构造函数或字面量时,才真正表示“匹配一个点” - 使用字面量写法
/./时,只经过正则引擎解析,只需一个;但用new RegExp("\.")时,字符串需先被 JS 解析,所以写"\."
常见错误示例与正确写法
目标:匹配字符串 "price: $19.99" 中的美元符号和小数点。
- ❌ 错误:
/$./——$在正则开头/结尾外无特殊意义,但这里它前面没,且$在行尾有含义,容易误解;.未转义,会匹配任意字符 - ✅ 正确(字面量):
/$19.99/——$匹配字面$,.匹配字面. - ✅ 正确(构造函数):
new RegExp("\$19\.99")—— 字符串里每个都要写成\
小技巧:用 String.raw 简化写法
ES6 引入了模板字符串的 String.raw,可避免字符串层的转义:
-
new RegExp(String.raw`$19.99`)→ 等价于"\$19\.99",但更易读 - 注意:
String.raw不影响正则引擎本身的转义逻辑,.仍需写对
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










