var str="1<script>alert(1)</"+"script>"
       +"2<script>alert(2)</"+"script>"
       +"3<script>alert(3)</"+"script>"
       +"4<script>alert(4)</"+"script>"
var reg=/<script[^>]*>([\s\S](?!<script))*?<\/script>/igm=str.match(reg)alert(m)

解决方案 »

  1.   

    楼上的朋友能否说明下 ([\s\S](?!<script))*? 这段表达式的意思。
    不明白 !的意思和 *? 的意思
      

  2.   

    [\s\S](?!<script) ===> 任意内容后不能跟<script  *?非贪婪匹配,就是第一次匹配成功后不再继续匹配
    你原来的匹配是贪婪的,所以含多个script标签时会一次匹配完所有的script