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

JavaScript create regex programmatically

本文关键字:创建 正则表达式 方式 编程 JavaScript      更新时间:2023-09-26

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

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

将替换所有出现的字面值mytarget。然而,我有一个大的词/短语数组,我想在regex替换中使用,并且由于regexp只是语言元素(它们在声明时没有包装在字符串中),我找不到一种方法来编程地声明regexp,除非我硬编码它们。如果我输入:

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');

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

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

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

构造函数的第一个参数是一个字符串,它接受//之间包装的任何内容。第二个参数也是string,您可以在其中传递gi等修饰符。

你可以像这样动态地构建一个RegEx -

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

请记住,您需要使用''

转义任何'字符
for( i in arr )
{
    str = str.replace(new RegExp("''"+arr[i],"g"), "some value")
}

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

var a = new RegExp("word")