2015-09-23 3 views
2

Я пишу расширение chrome, которое изменит цвет определенных слов на экране. У меня возникли проблемы с поиском текста, который отвечает моим потребностям, а затем аккуратно завертывает его в промежутке. Часто одно и то же слово в html заменяется в других местах страницы, что делает ссылки и стили бесполезными.Обтекание текста в тегах span

Мой пример кода следующим образом:

var reArray = ['number', 'numbers']; 
var re = new RegExp('\\b('+reArray.join('|')+')\\b', 'gi'); 
$('p, span').each(function(){ 
    $(this).html($(this).html().replace(re, '<span class="gold">$1</span>')); 
}); 
+0

предлагаем вам использовать плагин, который уже хорошо испытанный для этого – charlietfl

+1

Это мне кажется, что он работает со мной: http://jsfiddle.net/zyereb3k/ –

ответ

0

Оказывается, что следующее регулярное выражение работает при замене в организме.

(>[^<]*?)\\b(words|you|want|to|search|for)\\b 

И мой замещающий текст выглядит следующим образом:

$1<span class="gold">$2</span> 

Полный код:

var reArray = ['number','numbers']; 
var re = new RegExp('(>[^<]*?)\\b('+reArray.join('|')+')\\b', 'gi'); 
$('body').each(function(){ 
    $(this).html($(this).html().replace(re, '$1<span class="gold">$2</span>')); 
});