如何解释正则表达式中对特殊字符的不同处理



在Chrome 10开发人员工具控制台测试:

> str = "t";
  " "
> JSON.stringify(str)
  ""t""
> str.replace(/t/g,"\t")
  "t"

所有的好。正则表达式能够复制部分JSON.stringify行为并识别制表符。

现在让我们把t换成b:

> str = "b";
  ""
> JSON.stringify(str)
  ""b""
> str.replace(/b/g,"\b")
  ""

在这种情况下,replace找不到退格字符。

那么,我尊敬的So同事们,谁能给我点提示,解释一下行为上的差异?

正则表达式中的转义序列与字符串字面值中的转义序列不相同。在正则表达式中,b匹配单词边界。t恰好在正则表达式和字符串字面量中是相同的。

MDC对这些有一个相当好的描述,尽管当然没有什么比去规范更重要的了。

最新更新