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

时间:2010-11-21 08:34:49

标签: javascript regex

我正在尝试使用变量作为查询来执行正则表达式。

//This works
$('body *').replaceText(/\b(Toronto)/gi, nameWrapper );

我需要在变量中加入“多伦多”

var query = "Toronto";
$('body *').replaceText(/\b( --  query VARIABLE HERE --  )/gi, nameWrapper );

2 个答案:

答案 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);