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

Can*_*ğlu 11 javascript regex replace

我知道我可以像这样创建一个javascript替换:

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

这将取代所有出现的文字mytarget.但是,我想要在正则表达式替换中使用大量的单词/短语,并且因为正则表达式只是语言元素(在声明时它们不包含在字符串中),我找不到以编程方式声明regexps的方法除非我硬编码.所以,如果我有:

var arr=['word', 'another', 'hello'];

我想生产:

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

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

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

请发布一个我可以使用正则表达式的示例,因为我将在正则表达式中添加更多表达式,例如空格等.所以我需要正则表达式.最后,请不要提供使用eval,我相信有更好的方法.

jAn*_*ndy 18

您需要为此调用RegExp构造函数.例:

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

构造函数的第一个参数是一个字符串,它实际上包含了你要包装的任何东西//.第二放慢参数也是字符串,在那里你可以通过类似调节剂g,i等等.


ipr*_*101 5

您可以像这样动态构建 RegEx -

var word = 'hello';
var re =  new RegExp("\\b" + word + "\\b","g");
Run Code Online (Sandbox Code Playgroud)

请记住,您需要使用转义任何\字符\\