0

我有以下脚本,它将用and替换"anda字符。\"\a

'"replace'.replace(/"|a/g, "\\$&");

将导致:\"repl\ace

现在我需要将\(转义字符)替换为\\. SyntaxError: Invalid regular expression: missing /但在 chrome 控制台中尝试以下代码失败并出现异常。

'"re\place'.replace(/"|a|\/g, "\\$&");

替换正则表达式中的转义字符(在 Javascript 中)的可能解决方法是什么?

更新

简化 pblm,为什么 'rep\lace'.toString() 结果是 'replace' 而不是 'rep\lace'?

同样,我尝试过这些代码,

  1. "re\nlace".toString();结果re换行lace
  2. "re\xlace".toString();结果 SyntaxError: Unexpected token ILLEGAL。可能是 b,因为 \x 是不可执行的。

我认为 Javascript 正在执行字符串值。但为了什么?

4

3 回答 3

1
'"replace'.replace(/"|a|\\/g, "\\$&");
于 2012-09-23T08:04:37.813 回答
1

最后一个\转义最后一个/,你应该转义它以使你的正则表达式看起来像

'"replace'.replace(/"|a|\\/g, "\\$&");
于 2012-09-23T08:04:46.997 回答
0

问题 #1需要在正则表达式中转义
\

"re\place".replace(/a|\\/g,"\\$&");
repl\ace

问题 #2
"\"直接输入导致""-\再次需要转义:

"re\\place".replace(/a|\\/g,"\\$&");
re\\pl\ace

关键是,a\说:这里我们有一个特殊的字符。
\n-> 新行
\\-> \
\x-> 错误,因为 x 未定义为其他字符的字符

换句话说:
如果要键入,"re\nlace".toString();则必须在字符串中键入"re\\nlace".toString();

也许这可以帮助你:http ://en.wikipedia.org/wiki/Escape_character

于 2012-09-23T08:05:29.453 回答