目前我是这么处理的:
var reg=new RegExp("("+keyword+")","gi");
ret=ret.replace(reg,"<strong class=\color:red;\">$1</strong>");
现在就是希望替换的时候不替换标签里的内容.
var reg=new RegExp("("+keyword+")","gi");
ret=ret.replace(reg,"<strong class=\color:red;\">$1</strong>");
现在就是希望替换的时候不替换标签里的内容.
正则估计搞不来
var reg=new RegExp(<\/?[^>]+>)("+keyword+")*","gi");
ret=ret.replace(reg," <strong class=\color:red;\">$2</strong>");
不过是不是可以了就不是有把握 但是 测试了几个简单的情况都没有问题.
不过,是没有发现展现的问题.
但是,搜索的结果可能会有偏差,比如 标签里的字符可能会被检索到,虽然显示没有问题.期待进一步完善.
大概这样, 不过HTML代码一定要规范否则也会出问题大概这样吧<script>
var str = '如果您是第一次提问,建议您阅读 <strong style="red">"提问的智慧" </strong> 或者直接使用 <strong style="color:red">"CSDN 快速搜索" </strong>';
var key = '提问';
var reg = new RegExp('('+key+')(?:(?![^>]*>)|(?=[^>]*<[^>]*>))', 'gi');
alert(str.replace(reg, '<span style="color:red; font-weight:bold">$1</span>'));
</script>
已经很好了。
不过如果文字中出现大于号或者小于号的话也还是会有问题。
比如文章中有公式 a > b,这样的内容。
如果楼主想做为正式应用的话,
还有很多的情况需要考虑。