是什么解释了正则表达式中特殊字符的不同处理方式?

时间:2011-05-04 08:31:36

标签: javascript regex

在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同事,有人可以借给我一些线索并说明行为上的差异吗?

1 个答案:

答案 0 :(得分:4)

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

MDC有一个fairly good writeup of these,虽然当然没有什么比去the specification