关于字符串加红的一个替换,不过 a标签及标签内的不替换    例如字符串    “1abc<a hrec="abc.html">2abc</a>3abc”    如果加红a字符,我需要得到是只加红123abc和789abc中的a字符    结果:1<span style="color:red;">a</a>bc<a hrec="abc.html">2abc</a>3<span style="color:red;">a</a>bc         

解决方案 »

  1.   

    不是一行正则的可以吗
    <script type="text/javascript">
    <!--
    s ='1abc<a hrec="abc.html">2abc</a>3abc<a hrec="abc.html">3abc</a>';
    re = /<(\w+)[^>]*>.+?<\/\1>/gi;
    s2 = s.replace(re,'%%%');
    s3 = s2.replace(/a/g,'<span style="color:red;">a</a>') re.lastIndex = 0;
    a = re.exec(s)
    while (a!=null)
    {

    s3 = s3.replace('%%%',a[0])
    a = re.exec(s)
    }
    alert(s3);
    //-->
    </script>
      

  2.   

    '1abc<a hrec="abc.html">2abc</a>3abc'.replace(/[^>]+(?=$|<)/g, '<span style="color:red;">$&</span>')
      

  3.   

    哦,看LZ回复才明白把题意弄错了,再写“'1abc<a hrec="abc.html">2abc</a>3abc'.replace(/([^<]*)a([^>]*)/g, '$1<span style="color:red;">a</span>$2')
      

  4.   


    <script type="text/javascript">var str = '1abc<a hrec="abc.html">2abc</a>3abc';str = str.replace(/([^<]*)a([^>]*)/g, '$1<span style="color:red;">a</span>$2');alert(str)</script> 
      

  5.   

      我KAO,上面还是没搞懂题意,这下应该差不多了吧。LZ你急着想干嘛?LOL<script type="text/javascript">var str = '1abc<a href="abc.html">2abc</a>3abc';str = str.replace(/([^<]*)a([^\/]*)/g, '$1<span style="color:red;">a</span></a>$2');alert(str)</script> 
      

  6.   

    对搜索结果加红,但是字符串内有HTML链接标签,标签本身及标签内的字符串不加红,其他的含搜索字符进行加红操作
      

  7.   

    str.replace(/(<.*?a>)?([^<]*)a([^<]*)(<.*?a>)?/g, '$1$2<span style="color:red;">a</span>$3$4')
      

  8.   


    <script type="text/javascript">String.prototype.searcher = function(words) {
           var reg = RegExp("(<.*?a>)?([^<]*)"+words+"([^<]*)(<.*?a>)?", "g");
           return this.replace(reg, '$1$2<span style="color:red;">'+words+'</span>$3$4');
    }var str = '1abc<a href="abc.html">2abc</a>3abc<a href="abd.html">4abc</a>5abc<a href="abe.html">6abc</a>7abc';alert(str.searcher("a"));
    alert(str.searcher("b"));
    alert(str.searcher("ab"));
    </script>