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

Javascript 如何将变量值用作正则表达式模式,javascript,regex,replace,Javascript,Regex,Replace,我很绝望——我不知道我做错了什么。我尝试替换所有出现的“8969”,但无论tmp是字符串还是int,我都会得到原始字符串。可能已经太晚了,可能我是瞎子 var tmp = "8969"; alert("8969_8969".replace(/tmp/g, "99")); 有人能帮我吗 alert("8969_8969".replace(/8969/g, "99")); 或 在本例中,/字符是正则表达式的容器。'因此,tmp'不是用作变量,而是用作文本字符串 var tmp = /8969/g

我很绝望——我不知道我做错了什么。我尝试替换所有出现的“8969”,但无论tmp是字符串还是int,我都会得到原始字符串。可能已经太晚了,可能我是瞎子

var tmp = "8969";
alert("8969_8969".replace(/tmp/g, "99"));
有人能帮我吗

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

在本例中,/字符是正则表达式的容器。'因此,tmp'不是用作变量,而是用作文本字符串

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

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

var nRegExp = new RegExp("8969", 'g');
alert("8969_8969".replace(nRegExp, "99"));
/tmp/g。这是一个寻找短语tmp的正则表达式。您需要使用新的RegExp来创建动态regex

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

Javascript不支持tmp的这种用法,它将尝试使用“tmp”作为正则表达式模式

"8969_8969".replace(new RegExp(tmp,'g'), "99")

我知道这是可行的,但我有一个变量的值。。。即使我写var tmp=8969;它不起作用……为什么要使用这样的表达式/tmp/g?
"8969_8969".replace(new RegExp(tmp,'g'), "99")