0

我很绝望——我看不出我做错了什么。我尝试替换所有出现的 '8969' 但我总是得到原始字符串(无论 tmp 是字符串还是 int)。也许已经太晚了,也许我是瞎子,...

var tmp = "8969";
alert("8969_8969".replace(/tmp/g, "99"));

有人可以帮我吗?

4

5 回答 5

8

在这种/情况下,字符是正则表达式的容器。因此,'tmp' 不用作变量,而是用作文字字符串。

var tmp = /8969/g;
alert("8969_8969".replace(tmp, "99"));
于 2012-05-01T21:40:42.260 回答
5
alert("8969_8969".replace(/8969/g, "99"));

或者

var tmp = "8969"
alert("8969_8969".replace(new RegExp(tmp,"g"), "99")); 

现场演示

于 2012-05-01T21:39:40.240 回答
3

处理正则表达式的动态方式:

var nRegExp = new RegExp("8969", 'g');
alert("8969_8969".replace(nRegExp, "99"));
于 2012-05-01T21:41:15.007 回答
2

/tmp/g. 这是一个寻找短语的正则表达式"tmp"。您需要使用new RegExp来制作动态正则表达式。

alert("8969_8969".replace(new RegExp(tmp,'g'), "99"));
于 2012-05-01T21:41:22.313 回答
-1

Javascript 不支持tmp使用,它会尝试按字面意思使用 'tmp' 作为正则表达式模式。

"8969_8969".replace(new RegExp(tmp,'g'), "99")
于 2012-05-01T21:41:57.820 回答