<script>
var _innerHTML = "<<<1>>><basdfasdraa><img src='http://localhost/Images/EmotionalIcons/10001.png'/>";
_innerHTML = _innerHTML.replace(/<(?!img src=['"](.*)Images\/EmotionalIcons\/[^>]*>)/ig,"&lt;");
_innerHTML = _innerHTML.replace(/???????????????????????????????????????/ig,"&gt;");
alert(_innerHTML);
</script>如上,第一个replace是替换“<”在它后面如果非img src......则替换为&lt;第二个replace要求替换 “>”,条件是在它前面如果不是<img src=....,则替换为&gt;应该怎么写?谢谢

解决方案 »

  1.   

    <<<1>>>这个不是规范的html标签吧如果不考虑这种情况的话,LZ可以一次性替换
    var _innerHTML = "<1><basdfasdraa><img src='http://localhost/Images/EmotionalIcons/10001.png'/>";
    _innerHTML = _innerHTML.replace(/<(?!img src=['"](.*)Images\/EmotionalIcons\/[^>]*>)([^>]*)>/ig,"&lt;$2&gt;");
    alert(_innerHTML);
      

  2.   

    最好是可以将<<<<<1>>>>这种也替换
      

  3.   

    这样吧,用个循环吧
    <script>
    var _innerHTML = "<<<1>>><basdfasdraa><img src='http://localhost/Images/EmotionalIcons/10001.png'/>";
    var len = _innerHTML.length;
    do{
    var len = _innerHTML.length;
    _innerHTML = _innerHTML.replace(/<(?!img src=['"](.*)Images\/EmotionalIcons\/[^>]*>)([^>]*)>/ig,"&lt;$2&gt;");
    }while(_innerHTML.length!=len);
    alert(_innerHTML);
    </script>
      

  4.   

    晕,贴多了
    var _innerHTML = "<<<1>>><basdfasdraa><img src='http://localhost/Images/EmotionalIcons/10001.png'/>";
    do{
    var len = _innerHTML.length;
    _innerHTML = _innerHTML.replace(/<(?!img src=['"](.*)Images\/EmotionalIcons\/[^>]*>)([^>]*)>/ig,"&lt;$2&gt;");
    }while(_innerHTML.length!=len);
    alert(_innerHTML);
      

  5.   

    你的方法还是不够好用,因为<和>的数量并不一定是相等的,这个字符串是用户自由输入的保存时,我只允许符合<img src=..../EmotionalIcons/xxx.png> 这种规则的<与>,不符合规则的则替换成&lt;和&gt;
      

  6.   

    这样呢
    <script>
    var _innerHTML = "<<<1>>><basdfasdraa><img src='http://localhost/Images/EmotionalIcons/10001.png'/>";
    _innerHTML = _innerHTML.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&lt;(img[^&]*)&gt;/ig,"<$1>");
    alert(_innerHTML);
    </script>