为什么正则表达式中的转义字符无法匹配?

3
  1. 如果我想匹配点号符号 (.),我需要写这个正则表达式:

    /\./

需要转义字符来匹配该符号本身。

  1. 如果我想匹配 'd' 符号,我需要写这个正则表达式:

    /d/

不需要转义字符来匹配该符号本身。

而如果我想匹配任何字符 (/./) 或任何数字字符 (/\d/),则情况相反。

我觉得这种方法并不是非常一致。这背后的推理是什么呢?

谢谢。


1
实际上,要匹配一个点,你需要使用 /\./,而不是 /\\./ - Tim Pietzcker
Tim,感谢您的评论。您是完全正确的,我添加了一个额外的斜杠字符,因为Stackoverflow预览根本没有显示斜杠字符。我现在将编辑原始帖子。 - Ilya Chernov
1个回答

5
.字符是一个保留的正则表达式关键字,而d则不是。当匹配一个句号时,您需要包含转义字符来明确地告诉正则表达式您想要将句号作为普通匹配字符使用。 d本身不是一个保留关键字,因此您不需要进行转义,但\d是一个保留关键字。
我可以理解对于初次接触正则表达式的人来说,这可能有点奇怪,但是.被如此频繁地使用,而且我想不到什么时候我真正需要匹配句号,所以让它成为一个没有反斜杠的字符更有意义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接