在javascript中使用正则表达式中的变量

时间:2014-11-24 09:40:31

标签: javascript jquery

我的代码:

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(/ \ b \ w * {+ put +} \ w * \ b / ig

你能分享你的答案

1 个答案:

答案 0 :(得分:3)

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

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

请注意,忽略大小写(i)和全局(g)修饰符被指定为RegExp构造函数的第二个参数,而不是实际表达式的一部分。此外,您需要转义构造函数because \ is also an escape character in strings.

中的\字符

需要注意的另一点是,在使用/构造函数时,在表达式的开头和结尾不需要/分隔符Regexp

现在,您可以在调用.match()

时使用Regexp对象
string.match( re )

作为最后一点,我不建议使用名称string作为变量名称......正如您从语法高亮显示中看到的那样,{{1} }是保留字,不建议使用内置类型的名称作为变量名,因为它们可能会引起混淆。