比如源代码为
<script type="text/javascript" src="aaa.js"></script>
<script type="text/javascript" src="bbb.js"></script>
<script type="text/javascript" src="ccc.js"></script>正则怎么写才能把所有这些src的内容提取出来?这块的js对我来说一直比较薄弱。

解决方案 »

  1.   


    <script>
    var jsArr = [
    '<script type="text/javascript" src="aaa.js"><'+'/script>',
    '<script type="text/javascript" src="bbb.js"><'+'/script>',
    '<script type="text/javascript" src="ccc.js"><'+'/script>'];
    var reg = new RegExp('<script.*\\s+src="(\\S*)"><' + '/script>', "gi");
    for(var i = 0; i < jsArr.length; i++){
    var s = jsArr[i];
    alert(s.replace(reg, "$1")); //$1取第一个group,(\S*)里内容
    }
    </script>
    ps:非常神奇呀
    之直接var jsArr ='<script type="text/javascript" src="aaa.js"></script>';
    中浏览器中不认,
      

  2.   


    也不会难多少吧,试试这个吧:
    public static void main(String[] args) {
            String s = "<script type=\"text/javascript\" src=\"aaa.js\"></script>"
                    + "sadfsdafasdf<script type=\"text/javascript\" src=\"bbb.js\"></script>"
                    + "sadfas23423rgb<script type=\"text/javascript\" src=\"ccc.js\"></script>";
            Pattern p = Pattern.compile("<script(?:\\s+|\\s+\\S+\\s+)src=(\"\\S+\"|'\\S+')(?:\\s*|\\s+\\S+\\s*)></script>",
                    Pattern.CASE_INSENSITIVE);
            Matcher m = p.matcher(s);
            while (m.find()) {
                String group = m.group(1);
                System.out.println(group + " => " + group.substring(1, group.length() - 1));
            }
        }