我的代码:
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
你能分享你的答案
答案 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()
:
string.match( re )
作为最后一点,我不建议使用名称string
作为变量名称......正如您从语法高亮显示中看到的那样,{{1} }是保留字,不建议使用内置类型的名称作为变量名,因为它们可能会引起混淆。