2010-11-21 16 views
2

Ich versuche, einen regulären Ausdruck mit einer Variablen als Abfrage auszuführen.Javascript reguläre Ausdrücke mit Variablen?

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

ich brauche "Toronto" in einer Variablen

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

Antwort

8

Sie müssen haben RegExp verwenden, um einen regulären Ausdruck aus einem String zu bauen:

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

Und die Zeichenfolge zu zitieren richtig, können Sie dies verwenden:

RegExp.quote = function(str) { 
    return str.replace(/(?=[\\^$*+?.()|{}[\]])/g, "\\"); 
} 

Dann benutzen Sie einfach RegExp.quote(query) statt query, wenn der reguläre Ausdruck Gebäude:

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

Dank für das mit dem regex cleaner gehen die extra Meile. –

+0

@ BahaiResearch.com: Leider bietet JavaScript keine solche Methode. – Gumbo

2

wie diese versuchen:

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