JavaScript以编程方式创建正则表达式

JavaScript以编程方式创建正则表达式,javascript,regex,replace,Javascript,Regex,Replace,我知道我可以创建如下javascript替换: str=str.replace(/mytarget/g,'some value') 这将替换所有出现的文本mytarget。 然而,我想在regexreplace中使用大量的单词/短语,并且由于regexp只是语言元素(在声明时它们没有包装在字符串中),除非我硬编码它们,否则我找不到以编程方式声明regexp的方法。因此,如果我有: var-arr=['word','other','hello'] 我想制作: str=str.replace(/wo

我知道我可以创建如下javascript替换:

str=str.replace(/mytarget/g,'some value')

这将替换所有出现的文本
mytarget
。 然而,我想在regexreplace中使用大量的单词/短语,并且由于regexp只是语言元素(在声明时它们没有包装在字符串中),除非我硬编码它们,否则我找不到以编程方式声明regexp的方法。因此,如果我有:

var-arr=['word','other','hello']

我想制作:

str=str.replace(/word/g,'some value')

str=str.replace(/other/g,'some value')

str=str.replace(/hello/g,'some value')


请张贴一个例子,我可以使用正则表达式,因为我会添加更多的表达式到正则表达式,如空格等,所以我需要它的正则表达式的方式。最后,请不要提供使用
eval
,我相信有更好的方法。

如果您正在动态生成RegExp,可以使用RegExp对象

var a = new RegExp("word")

您可以像这样动态地构建正则表达式-

var word = 'hello';
var re =  new RegExp("\\b" + word + "\\b","g");

请记住,您需要使用
\\

转义任何
\
字符。您需要为此调用RegExp构造函数。例如:

['word', 'another', 'hello'].forEach(function( word ) {
    var myExp = new RegExp(word, 'g');
    str = str.replace(myExp, 'some value');
});

构造器的第一个参数是一个字符串,它从字面上接受您将在
/
之间包装的任何内容。第二个参数也是字符串,您可以在其中传递修饰符,如
g
i
,等等。

为什么要使用正则表达式?只要做一个简单的操作,替换模式就是一个regexp,原因我已经在上面解释过了。
for( i in arr )
{
    str = str.replace(new RegExp("\\"+arr[i],"g"), "some value")
}