我正在编写一个Chrome扩展程序,它会改变屏幕上某些单词的颜色。我无法找到符合我需求的文本,然后准确地将其包裹在一个范围内。通常情况下,html中的同一个单词会在页面的其他位置被替换,导致链接和样式无用。
我的示例代码如下:
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 :(得分: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>'));
});