Javascript替换包括'/'在内的多个字符

时间:2011-06-14 19:21:03

标签: javascript replace character reserved

我正在使用此代码段替换字符串中的多个字符。

var badwords = eval("/foo|bar|baz/ig");
var text="foo the bar!";
document.write(text.replace(badwords, "***"));

但我要替换的其中一个字符是'/'。我认为它不起作用,因为它是正则表达式中的保留字符,但我怎么能完成呢?

谢谢!

2 个答案:

答案 0 :(得分:4)

您只需在RegExp中转义“保留”字符:

var re = /abc\/def/;

你可能遇到了麻烦,因为出于某种原因,你使用字符串作为RegExp然后评估它......太奇怪了。

var badwords = /foo|bar|baz/ig;

就是你所需要的一切。

如果INISIST使用字符串,那么你必须逃避逃脱:

var badwords = eval( "/foo|ba\\/r|baz/ig" );

这通过JS解释器得到一个反斜杠,使其成为RegExp引擎。

答案 1 :(得分:1)

首先不要使用EVAL它是有史以来最邪恶的功能,而且完全没必要在这里

var badwords = /foo|bar|baz/ig;

同样适用(或使用new RegExp("foo|bar|baz","ig");构造函数)

如果你想在正则表达式中有一个/,在你要逃脱的角色之前有一个\

var badwords = /\/foo|bar|baz/ig;
//or
var badwords = new RegExp("\\/foo|bar|baz","ig");//double escape to escape the backslash in the string like one has to do in java