?是0,1次,+是1到多次。这里的?不是表示次数,是表示不采用贪婪算法,即前面的匹配字符里不会包含后面的</script>。

解决方案 »

  1.   

    var scriptFragment1 = /<script[^>]*>([\u0001-\uFFFF]*?)<\/script>/;
    var scriptFragment2 = /<script[^>]*>([\u0001-\uFFFF]*)<\/script>/;
    var script = '<script>alert(1)</script>';var result1 = script.match(scriptFragment1);
    alert(result1);
    var result2 = script.match(scriptFragment2);
    alert(result2);但是这样的结果怎么是一样的呢?
      

  2.   

    如果var script = '<script>alert(1)</script></script>';就两样了
    var scriptFragment1 = /<script[^>]*>([\u0001-\uFFFF]*?)<\/script>/;
    var scriptFragment2 = /<script[^>]*>([\u0001-\uFFFF]*)<\/script>/;
    var script = '<script>alert(1)</script></script>';var result1 = script.match(scriptFragment1);
    alert(result1);
    var result2 = script.match(scriptFragment2);
    alert(result2);