2015-06-07 2 views
-1

Я объясняю свою проблему. Я пытаюсь сделать функцию javascript, чтобы выделить слова (изменить их цвет) в html-тексте. У меня есть еще одна функция, чтобы выделить их.javascript regex для захвата слова в html-тексте

У меня есть список ключевых слов, которые я должен выделить.

Вот код, который я до сих пор writed

function highlight_words(keywords) { 

unHighlight_words(keywords); 
$('.rubricContent').each(function(index, element) { 
    //get elements for each rubrics 
    var content = $(element).html(); 
    if (keywords) { 
     $(keywords).each(function(i, e) { 
      var term = e 
      var re = new RegExp('(?:[^.;\w]|^|^\\W+){0}('+ term + ')(?:[^.\w]|\\W(?=\\W+|$)|$){0}', "gmi"); 
      var subst = '<span style="color:red">' + term + '</span> '; 
      content = content.replace(re, subst); 

     }); 
     $(element).html(content); 
    } 
}); 

Результат не так уж плохо мои слова красного цвета, но не тогда, когда они сопровождаются «» или ","

У кого-нибудь есть решение для меня? Спасибо!

ответ

0

Вы можете использовать границу слова \ b следующим образом.

term='Test'; 
content='TestTest. Test Test: Test. Test, TESTtest' 
var re = new RegExp('(\\b'+term+'\\b)', "gmi"); 
var subst = '<span style="color:red">' + term + '</span> '; 

content = content.replace(re, subst); 

alert(content) 

https://jsfiddle.net/3royvd66/1/

Смежные вопросы