我想替换源码中的一些字符,
一,不替换<........>里的字符
二,不替换<a...>....</a>或者<A......>.......</A>里的字符
试了半天都不能,要不全替换,要不一个不换比如以下这段代码:
-------------------------------
我们都是中国人,我家我们<a href=我们都是中国人 target=_blank>我们都是中国人</a>我们都有一个家<img src=http://ww.aa.bb alt=我们都有一个家 />我们中国中国我们
-----------------------------------------如果把"我们"换成"咱们",该如何换?标签内的不换,链接里的也不换
只换红色部分的,这个正则表达式该如何写?

解决方案 »

  1.   

    <script language=javascript>
    var str="我们都是中国人,我家我们 <a href=我们都是中国人 target=_blank >我们都是中国人 </a >我们都有一个家 <img src=http://ww.aa.bb alt=我们都有一个家 / >我们中国中国我们"
    var re=/((<a[^>]*>[\s\S]*?<\/a\s*>)|((<(?!(a|\/a)))[^>]*>))/ig
    var result=str.match(re)
    alert(result?result.join(""):"")
    </script>
      

  2.   

    大哥们帮帮忙,在线等ING.......
      

  3.   

    <script type="text/javascript">
    String.prototype.noHTMLReplace = function () {
    var a = arguments
    , k = a[0].replace(/([\|\\\+\*\.\(\)\/\[\]\?])/g, "\\$1")
    , r = new RegExp('(<(?:"[^"]*"|\'[^\']*\'|[^\'">]+)+>)|' + k, a[2]);
    return this.replace(r, function (i, b) {
    return b || a[1];
    });
    };var str = "我们都是中国人,我家我们  <a href=我们都是中国人 target=_blank>我们都是中国人  </a>我们都有一个家  <img src='http://ww.aa.bb' alt=我们都有一个家 />我们中国中国我们" 
    alert(str.noHTMLReplace("我们", "咱们", "gi"));
    </script>如果只要在标记里的话,那就便利标记就可以了。。用一个式子搞不定那个因为标记有嵌套,貌似很醒目的飘过。。
      

  4.   

    只是a标签和img标签不替换吗? 估计不是这样的,但又不能是所有标签,因为文档都在html标签里. 这个规则还是需要搞清楚的.你可以把可能出现的标签都match出来并用#i#替换掉,再把我们替换成咱们,再把#i#替换回来.
      

  5.   

    也不是都替换,只要注意A标签就行了,因为我要给那些字加上链接,如果把A里面的字也加上链接就会出问题了...还有<>括号里的内容不能替换,就这两点,有没有高人指点下
      

  6.   

    <script language="JavaScript">
    <!--var str = '我们都是中国人,我家我们     <a   href=我们都是中国人   target=_blank >我们都是中国人     </a >我们都有一个家     <img   src= "http://ww.aa.bb "   alt=我们都有一个家   / >我们中国中国我们';
    var i=0;
    var k=0;
    var arlnks = str.match(/<a[^<]*?>[\s\S]*?<\/a\s*>/gi);
    var tmp = str.replace(/<a[^<]*?>[\s\S]*?<\/a\s*>/gi,function(){ return "#"+ (i++) + "#"; });var artags =  str.match(/<[^<]+?>/gi);
    tmp = tmp.replace(/<[^<]+?>/g,function(){ return "@"+ k++ + "@"; });
    tmp = tmp.replace(/我们/g,function(){ return "we"; });
    for(var j=0;j<k;j++){
    tmp = tmp.replace(new RegExp("@"+ j + "@"),artags[j]);
    }
    for(var j=0;j<i;j++){
    tmp = tmp.replace(new RegExp("#"+ j + "#"),arlnks[j]);
    }
    alert(tmp);
    //-->
    </script>
      

  7.   

    <script type="text/javascript"> 
    String.prototype.noHTMLReplace = function () { 
    /*
    第一个参数是要替换的内容
    第二个参数是替换成的内容
    第三个参数是设置替换多个和是否忽略大小写即:i(忽略大小写), g(替换多个)
    第四个参数是是否替换标记包含的关键字 Boolean
    */
    var a = arguments, i = 0
    , html = /^<(?:img|br|hr)/i //特殊标记
    , k = a[0].replace(/([\|\\\+\*\.\(\)\/\[\]\?])/g, "\\$1")  //替换特殊字符
    , r = new RegExp('(<(?:"[^"]*"|\'[^\']*\'|[^\'">]+)+>)|' + k, a[2]) //匹配所有标记
    , f = function (input, b) {
    if (a[3] && b && !html.test(b)) i += (b.indexOf("<\/") == 0 ? -1 : 1); //设置层
    return (i > 0 && input) || b || a[1];
    };
    return this.replace(r, f);
    };var str = '我们都是中国人,我家我们     <a   href=我们都是中国人   target=_blank >我们都是中国人     </a >我们都有一个家     <img   src= "http://ww.aa.bb "   alt=我们都有一个家   / >我们中国中国我们';
    alert(str.noHTMLReplace("我们", "咱们", "gi", true));
    alert(str.noHTMLReplace("我们", "咱们", "gi"));
    </script>