<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
    <script>
        $(function () {
            alert($("#divtest").html().replace("a","b"))
        })
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div id="divtest">abc&amp;def</div>
    </form>
</body>
</html>

解决方案 »

  1.   

    先替换实体为其他东东,在替换回来,这样就不会误伤,一个正则来完成字符不处于&和;中比较麻烦
         var s = 'abc&amp;defabcab&amp;c&hearts;aaa';alert(s)
         var entries = {}, index = 0;
         s = s.replace(/&[a-z]+;/gi, function ($0) { index++; entries[index] = $0; return '__entry' + index + '__'; });
         s = s.replace(/a/g, 'b');
         for (k in entries) s = s.replace('__entry' + k + '__', entries[k]);
         alert(s);
      

  2.   

    var s = 'abc&amp;defabcab&amp;c&hearts;aaa';
    var r = /a/g;
    $a=s.replace(r,function(s1,s2,s3,s4){
    var $x = s3[s2-1];
    if($x == "&"){
    return s1;
    }else{
    return "--";
    }
    })
      

  3.   


    谢谢!不过,如果原字符串第一个实体前恰好出现了一个"__emtry1__",那又会被误伤了,虽然概率极低。
    这样看来,先把实体替换成什么字符串都不是100%保险的。
      

  4.   


    谢谢!不过,如果原字符串第一个实体前恰好出现了一个"__emtry1__",那又会被误伤了,虽然概率极低。
    这样看来,先把实体替换成什么字符串都不是100%保险的。你将实体替换成后续替换不可能出现的字符啊。。如很特殊的字符,你的内容基本不可能出现的,我这里只是举例