我正在使用此代码段替换字符串中的多个字符。
var badwords = eval("/foo|bar|baz/ig");
var text="foo the bar!";
document.write(text.replace(badwords, "***"));
但我要替换的其中一个字符是'/'。我认为它不起作用,因为它是正则表达式中的保留字符,但我怎么能完成呢?
谢谢!
答案 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