我试图用变量作为查询执行正则表达式.
//This works
$('body *').replaceText(/\b(Toronto)/gi, nameWrapper );
Run Code Online (Sandbox Code Playgroud)
我需要在变量中加入"多伦多"
var query = "Toronto";
$('body *').replaceText(/\b( -- query VARIABLE HERE -- )/gi, nameWrapper );
Run Code Online (Sandbox Code Playgroud)
您需要使用RegExp从字符串构建正则表达式:
var query = "Toronto";
$('body *').replaceText(RegExp("\\b(" + query + ")", "gi"), nameWrapper);
Run Code Online (Sandbox Code Playgroud)
并正确引用您的字符串,您可以使用:
RegExp.quote = function(str) {
return str.replace(/(?=[\\^$*+?.()|{}[\]])/g, "\\");
}
Run Code Online (Sandbox Code Playgroud)
然后使用RegExp.quote(query)而不是query在构建正则表达式时:
var query = "Toronto";
$('body *').replaceText(RegExp("\\b(" + RegExp.quote(query) + ")", "gi"), nameWrapper);
Run Code Online (Sandbox Code Playgroud)