我使用这个片段来替换字符串中的几个字符。
var badwords = eval("/foo|bar|baz/ig");
var text="foo the bar!";
document.write(text.replace(badwords, "***"));
但我要替换的字符之一是'/'。我认为它不起作用,因为它是正则表达式中的保留字符,但是我该如何完成呢?
谢谢!
我使用这个片段来替换字符串中的几个字符。
var badwords = eval("/foo|bar|baz/ig");
var text="foo the bar!";
document.write(text.replace(badwords, "***"));
但我要替换的字符之一是'/'。我认为它不起作用,因为它是正则表达式中的保留字符,但是我该如何完成呢?
谢谢!
您只需在 RegExp 中转义“保留”字符:
var re = /abc\/def/;
您可能会遇到麻烦,因为出于某种原因,您使用字符串作为正则表达式,然后对其进行评估……太奇怪了。
var badwords = /foo|bar|baz/ig;
是你所需要的全部。
如果你不想使用字符串,那么你必须逃避你的逃避:
var badwords = eval( "/foo|ba\\/r|baz/ig" );
这通过 JS 解释器得到一个反斜杠,以使其进入 RegExp 引擎。
第一个 DON'T USE EVAL 这是有史以来最邪恶的功能,在这里完全没有必要
var badwords = /foo|bar|baz/ig;
也可以工作(或使用new RegExp("foo|bar|baz","ig");
构造函数)
当您想/
在正则表达式中有 a 并且\
在要转义的字符之前有 a
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