希望通过js来匹配出网页中的js代码段,包含<script ....>,只匹配出自己写的js代码  不要<script type="text/javascript" src="source/jquery.qtip.min.js"></script>
这种形式的p = /<script[^\>]*?( reload=\"1\")?>([^\x00]+?)<\/script>/ig;
p.exec(s)
为什么匹配出了这个呢
"</script> <script type="text/javascript" src="image/plupload/plupload.flash.js">" 正确的正则该怎么写呢?谢谢

解决方案 »

  1.   

    p = /^<script[^\>]*?( reload=\"1\")?>([^\x00]+?)<\/script>&/ig;试试这个。。
      

  2.   


    p = /<(script)\s+((language=['"]?javascript['"]?)|(type=['"]?text\/javascript['"]?))?\s*\/?>.*(?:<\/\1>)?/gi;
      

  3.   


    var s ='<script type="text/javascript" src="image/plupload/plupload.js"></script><script type="text/javascript" src="image/plupload/plupload.flash.js"></script><script type="text/javascript" src="image/plupload/plupload.html4.js"></script><script type="text/javascript" src="image/plupload/plupload.html5.js"></script><script type="text/javascript">alert("test");</script>'
    p = /<(script)\s+((language=['"]?javascript['"]?)|(type=['"]?text\/javascript['"]?))?\s*\/?>.*(?:<\/\1>)?/gi;
    var arr = new Array();
    while(arr = p.exec(s)) 
    alert(arr[1]+','+arr[1]+','+arr[2]);输出的不对
      

  4.   

    我希望输出<script type="text/javascript">alert("test");</script>
      

  5.   

    给你一个提取本页面源码中不含SRC引用的JS代码的正则DEMO:<textarea id="test" style="width:600px;height:500px">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    .................................
    <title>通过正则匹配出js代码段(非src外部引用的)的问题 - Web 开发 / JavaScript</title>
    <link href="http://c.csdn.net/bbs/t/5/t5.css" rel="stylesheet" type="text/css" />
    <link href="http://www.csdn.net/images/favicon.ico" rel="SHORTCUT ICON" />
    <script type="text/javascript">
    var tinfo = {
    pdate: "2012-03-09 15:35:03"
    ,sid: "467d91e3-dd10-480b-a322-71b65e66c736"
    ,tid: "1f8cdf9c-3337-4f50-9976-49e857ee8214"
    ,ba: "WebDevelop"
    ,sa: "JavaScript"
    };
    </script>
    <script type="text/javascript" src="/u/t5/t5.js"></script>
    <script type="text/javascript" src="http://counter.csdn.net/a/js/AreaCounter.js"></script>
    </head>
    <body id="bbscsdn_wrap">
    <script src="http://csdnimg.cn/pubnav/js/pub_topnav.js" type="text/javascript"></script>
    <div class="tad">
        <iframe id="Topic_Top" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" width="100%" height="0" src="/u/t5/include/ad1.asp?pdate=2012-03-09 15:35:03&ba=WebDevelop&sa=JavaScript"></iframe>
    </div>
    <div class="nav"> 
    ............................
    <script type="text/javascript">
        setTimeout(function () {
            document.getElementById("frm_tt1").src = "/u/t5/include/topic_top.html";
        }, 5000);
    </script><div class="loc">
    <p>
    <!-- a href="http://wz.csdn.net/rxsg/index.aspx" target="_blank" onclick='LogClickCount(this,117);'><img src="http://c.csdn.net/bbs/t/5/i/rxsg.jpg" alt="热血三国" /></a --> <a href="http://www.csdn.net/" target="_blank">CSDN</a>-<a href="http://community.csdn.net/" target="_blank">CSDN社区</a>-<a href="http://forum.csdn.net/BList/WebDevelop/" target="_blank">Web 开发</a>-<a href="http://forum.csdn.net/SList/JavaScript//" target="_blank">JavaScript</a> </p>
    </div>
    ....................................
    <table class="comt" cellpadding="0" cellspacing="0"><tr><td style="width:200px;">
    <iframe id="Iframe1" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" width="200px" height="415px" src="/u/t5/include/ad4.asp?pdate=2012-03-09 15:35:03&ba=WebDevelop&sa=JavaScript"></iframe>
    </td><td >
    <iframe class="replyframe" id="replyframe" frameborder="0" scrolling="no" height="415px" width="100%" src="http://forum.csdn.net/PointForum/Forum/ReplyT.aspx?forumID=467d91e3-dd10-480b-a322-71b65e66c736&topicID=1f8cdf9c-3337-4f50-9976-49e857ee8214&postDate=2012-03-09+15%3a35%3a03&v=13&sa=WebDevelop&ba=JavaScript" csdnid="rframe"></iframe>
    </td></tr>
    </table>
    <script type="text/javascript">
    new Image().src="http://forum.csdn.net/Common/TopicRead.ashx?postDate=2012-03-09+15%3a35%3a03&topicID=1f8cdf9c-3337-4f50-9976-49e857ee8214&"+(new Date().getTime().toString(36));new Image().src="http://forum.csdn.net/PointForum/SetLatestVisitedForum.ashx?sectionid=467d91e3-dd10-480b-a322-71b65e66c736";
    </script>
    <script src="http://csdnimg.cn/pubfooter/js/publib_footer.js" type="text/javascript"></script><img alt="" src="http://counter.csdn.net/pv.aspx?id=185" border="0" width="0" height="0" style="display: none" />
    <div><script type="text/javascript" src="http://www.csdn.net/ui/scripts/Csdn/counter.js?v=1.1"></script></div>
    <div id="ad_left" style="position:absolute;width:120px;top:184px;left:10px;display:none;"><a style="float:right;" href="#" onclick="javascript:this.parentNode.style.display='none';return false;">[关闭]</a>
    <script type="text/javascript">
    try {
    var pdate = "" + parent.eval("tinfo.pdate");
    if (pdate) {
    pdate = new Date(pdate.replace(/-/g, "/"));
    var today = new Date();
    showad = (today.getTime() - pdate.getTime()) / 1000 / 60 / 60 / 24 > 30;
    }
    } catch (ex) { };
    showad=true;
    try {
    var ad_left = "";
    if (showad && screen.availWidth >= 1280) {
    ad_left += '<' + 'script type=\"text/javascript\">';
    ad_left += 'google_ad_client = "pub-1076724771190722";';
    ad_left += 'google_ad_slot =\"5633584852\";';
    ad_left += 'google_ad_width = 120;';
    ad_left += 'google_ad_height = 600;';
    ad_left += '</' + 'script>';
    ad_left += '<' + 'script type=\"text/javascript\"';
    ad_left += 'src=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">';
    ad_left += '</' + 'script>';
    }
    document.write(ad_left);
    document.getElementById("ad_left").style.display = "";
    } catch (e) { }
    </script>
    </div>
    <div id="ad_right" style="position:absolute;width:120px;top:184px;right:10px;display:none;">
    <a style="float:left;" href="#" onclick="javascript:this.parentNode.style.display='none';return false;">[关闭]</a>
    <script type="text/javascript">
    try {
    var ad_right = "";
    if (showad && screen.availWidth >= 1280) {
    ad_right += '<' + 'script type=\"text/javascript\">';
    ad_right += 'google_ad_client = "pub-1076724771190722";';
    ad_right += 'google_ad_slot =\"9259923286\";';
    ad_right += 'google_ad_width = 120;';
    ad_right += 'google_ad_height = 600;';
    ad_right += '</' + 'script>';
    ad_right += '<' + 'script type=\"text/javascript\"';
    ad_right += 'src=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">';
    ad_right += '</' + 'script>';
    }
    document.write(ad_right);
    document.getElementById("ad_right").style.display = "";
    } catch (e) { }
    </script>
    </div>
    <!--云计算的广告-->
    <script type="text/javascript" src="http://ag.csdn.net/js/jquery-1.4.1.min.js"></script>
    <script type="text/javascript">
        jQuery.noConflict();
    </script><!--ibm ad-->
    <script type="text/javascript" src="http://event.blog.csdn.net/cloudad/ibm/ad.js?v=1"></script>
    <!--取消置顶-->
    <script type="text/javascript">
        function setUnTopLink() {
            var _url = "http://forum.csdn.net/PointForum/Manage/Tops/deleteTop.aspx";
            _url += "?topicUrl=" + encodeURIComponent(location.href);
            _url += "&sectionID=" + encodeURIComponent(tinfo.sid);
            var _click = "try{showWindow({url:'" + _url + "',width:600,height:265,title:'取消置顶'});}catch(ex){}return false;";
            var li = jQuery('<li><a href="#" onclick="' + _click + '">取消置顶</a></li>');
            li.insertAfter(jQuery('#a_head_recreate').parent().next());
        }
        setTimeout("setUnTopLink()",3000);
    </script>
    </body>
    </html>
    </textarea>
    <script>
    var str =document.getElementById("test").value;
    str = str.match(/<(script)(?!.*src)[^>]*>(?!.*<\/)[\S\s]*?<\/\1>/gi).join("\n");
    alert(str)</script>