我有以下脚本将用"
和a
替换\"
和\a
个字符。
'"replace'.replace(/"|a/g, "\\$&");
将导致:\"repl\ace
现在我需要用\
替换\\
(转义字符)。但尝试以下代码失败,Chrome控制台中的异常SyntaxError: Invalid regular expression: missing /
。
'"re\place'.replace(/"|a|\/g, "\\$&");
在正则表达式中替换转义字符的可能解决方法是什么(在Javascript中)?
更新
简化pblm,为什么'rep \ lace'.toString()会导致'替换'而不是'rep \ lace'?
关于同样的问题,我试过这些代码,
"re\nlace".toString();
结果re
换行lace
"re\xlace".toString();
结果SyntaxError: Unexpected token ILLEGAL
。可能是因为\ x不可执行。我认为Javascript正在执行字符串值。但为了什么?
答案 0 :(得分:1)
'"replace'.replace(/"|a|\\/g, "\\$&");
答案 1 :(得分:1)
最后\
转义最后一个/
,您应该将其转义以使您的正则表达式看起来像
'"replace'.replace(/"|a|\\/g, "\\$&");
答案 2 :(得分:0)
问题#1
\
需要在正则表达式中进行转义:
"re\place".replace(/a|\\/g,"\\$&");
repl\ace
问题#2
这个"\"
直接输入结果""
- \
再次需要转义:
"re\\place".replace(/a|\\/g,"\\$&");
re\\pl\ace
关键是,\
说:这里我们有一个特殊的字符
\n
- >新线
\\
- > \
\x
- >错误,因为x未定义为其他内容的char
换句话说:
如果要输入"re\nlace".toString();
,则在字符串中输入"re\\nlace".toString();