带有变量的javascript正则表达式?

Ian*_*ink 2 javascript regex

我试图用变量作为查询执行正则表达式.

//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)

Gum*_*mbo 8

您需要使用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)