如何在正则表达式中处理\(转义)字符?

时间:2012-09-23 08:00:21

标签: javascript regex

我有以下脚本将用"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'?

关于同样的问题,我试过这些代码,

  1. "re\nlace".toString();结果re换行lace
  2. "re\xlace".toString();结果SyntaxError: Unexpected token ILLEGAL。可能是因为\ x不可执行。
  3. 我认为Javascript正在执行字符串值。但为了什么?

3 个答案:

答案 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();

也许这有助于您:http://en.wikipedia.org/wiki/Escape_character