Javascript 如何解释正则表达式中特殊字符的不同处理?
在Chrome 10开发者工具控制台中测试:Javascript 如何解释正则表达式中特殊字符的不同处理?,javascript,regex,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,
> 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有一个目标,当然没有什么比去更重要的了。你这样说似乎很明显。下一个问题将是,如何修改正则表达式以查找并替换JavaScript字符串中的反斜杠?@Jim:反斜杠的重新转义序列与字符串文本中的转义序列相同:两个反斜杠:\\。或者,如果您是指退格,则必须使用十六进制转义(
\x08
)或Unicode转义(\u0008
),或者将字符串传递到RegExp
构造函数中(我建议避免,这会很快变得非常混乱):新建RegExp(\\\b”)
,它创建一个包含反斜杠和退格的字符串,然后将其传递到RegExp
构造函数中。RegExp
会看到反斜杠,并按字面意思处理下一个字符(反斜杠)。你知道这会让人困惑的T.J.你是个明星<代码>str.replace(/\x08/g,“\\b”)交付货物。