0

我使用这个片段来替换字符串中的几个字符。

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

但我要替换的字符之一是'/'。我认为它不起作用,因为它是正则表达式中的保留字符,但是我该如何完成呢?

谢谢!

4

2 回答 2

4

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

var re = /abc\/def/;

您可能会遇到麻烦,因为出于某种原因,您使用字符串作为正则表达式,然后对其进行评估……太奇怪了。

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

是你所需要的全部。

如果你不想使用字符串,那么你必须逃避你的逃避:

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

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

于 2011-06-14T19:24:17.757 回答
1

第一个 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
于 2011-06-14T19:28:59.093 回答