如何将变量值用作正则表达式模式

use*_*742 0 javascript regex replace

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

var tmp = "8969";
alert("8969_8969".replace(/tmp/g, "99"));
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

Con*_*ell 8

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

var tmp = /8969/g;
alert("8969_8969".replace(tmp, "99"));
Run Code Online (Sandbox Code Playgroud)


gdo*_*ica 5

alert("8969_8969".replace(/8969/g, "99"));
Run Code Online (Sandbox Code Playgroud)

要么

var tmp = "8969"
alert("8969_8969".replace(new RegExp(tmp,"g"), "99")); 
Run Code Online (Sandbox Code Playgroud)

现场演示