目前我是这么处理的:
    var reg=new RegExp("("+keyword+")","gi");
    ret=ret.replace(reg,"<strong class=\color:red;\">$1</strong>");
现在就是希望替换的时候不替换标签里的内容.   

解决方案 »

  1.   

    一个字符,一个字符的去分析html文档...跟搜索引擎的蜘蛛程序类似
    正则估计搞不来
      

  2.   

        呵呵,现在换成这样了.
        var reg=new RegExp(<\/?[^>]+>)("+keyword+")*","gi"); 
        ret=ret.replace(reg," <strong class=\color:red;\">$2</strong>"); 
    不过是不是可以了就不是有把握 但是 测试了几个简单的情况都没有问题.
        不过,是没有发现展现的问题.
        但是,搜索的结果可能会有偏差,比如 标签里的字符可能会被检索到,虽然显示没有问题.期待进一步完善.
      

  3.   

    判断 关键字后面为能为>或者<后面跟一个>
    大概这样, 不过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>
      

  4.   


    已经很好了。
    不过如果文字中出现大于号或者小于号的话也还是会有问题。
    比如文章中有公式 a > b,这样的内容。
    如果楼主想做为正式应用的话,
    还有很多的情况需要考虑。