关于jquery:在javascript中使用正则表达式中的变量

Use variable inside the regular expression in javascript

本问题已经有最佳答案,请猛点这里访问。

我的代码:

1
2
3
4
5
6
7
8
9
10
var string ="I put putty on the computer. putty, PUT do I"

var uniques = {};

var result = (string.match(/\b\w*put\w*\b/ig) || []).filter(function(item) {
   item = item.toLowerCase();
   return uniques[item] ? false : (uniques[item] = true);
});

document.write( result.join(",") );

这里我要在表达式中传递一个变量

在这里,我传递了一个值"put"并得到了答案。但是我必须为这个值使用变量。

我尝试过string.match(/w*+put+w*/ig

你能分享你的答案吗?


您应该创建一个特定的正则表达式对象来与.match()函数一起使用。这样,您可以使用字符串创建regex,并在创建变量时插入它:

1
2
var changing_value ="put";
var re = new RegExp("\\b\\w*" + changing_value +"\\w*\\b","ig");

注意,ignore case(i和global(g修饰符)被指定为RegExp构造函数的第二个参数,而不是实际表达式的一部分。另外,您需要在构造函数中转义\字符,因为也是字符串中的转义字符。

另一件需要注意的是,在使用RegExp构造函数时,不需要在表达式的开始和结束处使用/分隔符/

现在可以在调用.match()时使用regexp对象:

1
string.match( re )

最后一点,我不建议您使用名称string作为变量名…从语法突出显示中可以看到,string是一个保留字,不建议将内置类型的名称用于变量名,因为它们可能会导致混淆。