在span标签中包装文本

时间:2015-09-23 19:41:18

标签: javascript jquery html

我正在编写一个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>'));
});

1 个答案:

答案 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>'));
});