正则 请问要怎么改才能只匹配非标签内容

我在做一个搜索关键字高亮功能,回调数据生成新的html之后,把html中的关键字加上一个span标签
实现代码
var reg = new RegExp(search, "g");
html = html.replace(reg, '<span class="green">' + search + '</span>');
正常情况下没问题 可是如果出现这样的情况
var search = '123'
var html = '<p id="1234">ID:1234 name:测试<p>'
执行后会把id="123"也加上span标签 我想实现只替换标签之间的内容,请问要怎么改?

第1个回答  2017-01-06
var html = '<p id="1234">ID:1234 name:测试<p>';
var keyword = '123';
var reg = new RegExp('(>?[^<]*)(' + keyword + ')([^>]*<?)', 'g');
var result = html.replace(reg, function(x, a, b, c) {
return a + '<span class="green">' + b + '</span>' + c;
});

console.log(result);

输出结果

<p id="1234">ID:<span class="green">123</span>4 name:测试<p>

第2个回答  2017-01-06

实现只替换标签之间的内容的javascript程序如下

<script type=text/javascript>
 var search = '123';
 var html = '<p id="1234">ID:1234 name:测试<p>';
 var reg = new RegExp("(>[^<]*?)"+search+"([^>]*?<)", "g"); 
 html = html.replace(reg, '$1<span class="green">'+search+'</span>$2');
 alert(html);
</script>

运行结果
<p id="1234">ID:<span class="green">123</span>4 name:测试<p>

本回答被提问者和网友采纳
第3个回答  2017-01-06
钓鱼网站制作 下载冰河
相似回答