问题多了,总之一句话,楼主html源代码看得太少了,复杂问题简单化了举个最容易遇到的<script language="...">...</script>xxxxxxxxxxxx<img src="...">
这里匹配script.*?src,也就是把xxxxxxxxxxxx给过滤了

解决方案 »

  1.   

    恕我直言,楼主还是直接匹配src,href,background等等比较好,至少不会漏下
      

  2.   

    哪个给你说漏掉的?
    我用的是php语言并没有你说的漏掉啊? 
    <?php 
    $str = '<script language="...">... </script>xxxxxxxxxxxx <img src="..."> '; 
    function RegAll($str,$dir)//替全部地址路径 

    return preg_replace("/(<a.*?href|<img.*?src|<link.*?href|<script.*?src|<.*?background)([\s]*=[\s]*[\"|\']?[\s]*)([^\s|\"|\'|>]+)(.*?[\/]?>)/is",'$1$2'.$dir."$3$4",$str); 

    $str = RegAll($str,"中国"); 
    echo $str; 
    ?>
      

  3.   

    可能没说明白吧<script language="...">... </script><a href="http://www.baidu.com">百度</a><img src="...">不能匹配http://www.baidu.com吧
      

  4.   

    至少也应该改用
    <script[^>]+?src