我正在尝试使用变量作为查询来执行正则表达式。
//This works
$('body *').replaceText(/\b(Toronto)/gi, nameWrapper );
我需要在变量中加入“多伦多”
var query = "Toronto";
$('body *').replaceText(/\b( -- query VARIABLE HERE -- )/gi, nameWrapper );
答案 0 :(得分:8)
您需要使用RegExp
从字符串构建正则表达式:
var query = "Toronto";
$('body *').replaceText(RegExp("\\b(" + query + ")", "gi"), nameWrapper);
要正确引用您的字符串,您可以使用:
RegExp.quote = function(str) {
return str.replace(/(?=[\\^$*+?.()|{}[\]])/g, "\\");
}
然后在构建正则表达式时使用RegExp.quote(query)
而不是query
:
var query = "Toronto";
$('body *').replaceText(RegExp("\\b(" + RegExp.quote(query) + ")", "gi"), nameWrapper);
答案 1 :(得分:2)
试试这样:
var query = 'Toronto';
var regex = new RegExp('\\b(' + query + ')', 'gi');
$('body *').replaceText(regex, nameWrapper);