在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同事,有人可以借给我一些线索并说明行为上的差异吗?
答案 0 :(得分:4)
正则表达式中的转义序列与字符串文字中的转义序列不同。在正则表达式中,\b
匹配单词边界。正则表达式和字符串文字中的\t
恰好相同。
MDC有一个fairly good writeup of these,虽然当然没有什么比去the specification。