2010-11-21 97 views
2

我想執行一個正則表達式與變量作爲查詢。JavaScript正則表達式與變量?

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

我需要在一個變量

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

回答

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); 
+0

感謝您與正則表達式清潔要加倍努力。 – 2010-11-21 09:00:30

+0

@ BahaiResearch.com:不幸的是JavaScript不提供這樣的方法。 – Gumbo 2010-11-21 09:02:25

2

嘗試這樣的:

var query = 'Toronto'; 
var regex = new RegExp('\\b(' + query + ')', 'gi'); 
$('body *').replaceText(regex, nameWrapper);