2010-11-21 2 views

ответ

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

Благодарим за лишнюю милю с очистителем регулярных выражений. –

+0

@ BahaiResearch.com: К сожалению, JavaScript не предоставляет такого метода. – Gumbo

2

Попробуйте так:

var query = 'Toronto'; 
var regex = new RegExp('\\b(' + query + ')', 'gi'); 
$('body *').replaceText(regex, nameWrapper); 
Смежные вопросы