JavaScript以编程方式创建正则表达式
我知道我可以创建如下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
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")
}