<script type="text/javascript">
function cpl(val) {
return val.replace(/<img(?:title=(?:'([^']*)'|"([^"]*)"|([^ ]*))|'[^']*'|"[^"]*"|[^>'"])+>|<(?:'[^']*'|"[^"]*"|[^>'"]+)+>/ig, "$1$2$3");
//半法这个相对很严紧所以要长点。。"
};
alert(cpl("<IMG src='title=' onclick='里面随便写' title=\"asdfghjkl\">123456"));
</script>

解决方案 »

  1.   

    好的我先试试   谢谢  var regx= /<img[^>]*title=(['""]?)(?<title>[^'""]*)\1?[^>]*>|<(?!img|sup|\/sup|sub|\/sub)[^>]*>|\s|&nbsp;/g;    
       var str="<IMG title=\"asdfghjkl" \">123456";
        var rs=str.replace(regx,"${title}");请问这样写为什么有错误?  (regx,"${title}") 与 "$1$2$3")  有什么区别 ?
      

  2.   

    /<img[^>]*title=(['""]?)(?<title>[^'""]*)\1?[^>]*>|<(?!img|sup|\/sup|sub|\/sub)[^>]*>|\s|&nbsp;/g; <img[^>]*
    你这里没有设置非贪婪。这样有可出现多个img的时候发生错误。。
    另外(?<title>[^'""]*)这个属于平衡组,JS不支持平衡组。。
    还有<(?!img
    既然是或关系。就是说前面的总是会优先匹配这样你后面写非img这种东西的时候会把
    不带title的img楼掉
    我那个很严谨的说。不然可以写的很简单严谨是指连这种变态的情况都考虑在内。除非你的IMG标记是错误的。。
    alert(cpl("<IMG src='title=' onclick=\"this.title='wc'\" title=\"asdfghjkl\">123456"));
    这种情况。一般的非贪婪匹配的式子就会出现问题。。
    还有。。你那种[^>]的情况如果它的属性里有'>'就会结束匹配,这样会造成错误。