zoukankan      html  css  js  c++  java
  • 正则表达式获取body内容

    最近项目需要,要弄个正则表达式获取body的内容。

    用过angularjs就知道,很多时候要写指令时引用templateUrl的时候。template的内容root是不能包含多个节点的,否则就报错。

    这样的规范很不好,很多时候还是想保留template的头,文档类型,css等信息。

    所以在开发模式下,希望angularjs加载模板的时候,自动砍掉头部和尾部.

    获取之前:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <script src="CssScriptLoader.js"></script>
        <script src="XZClass.js"></script>
    </head>
    <body>
        <div>内容</div>
    </body>
    </html>

    希望的结果:

    <div>内容</div>


    所以正则表达式如下:

            var REG_BODY = /<body[^>]*>([sS]*)</body>/;
    
            function getBody(content){
                var result = REG_BODY.exec(content);
                if(result && result.length === 2)
                    return result[1];
                return content;
            }


    这里遇到了个问题,match和exec的区别:

    match是返回所有匹配的字符串合成的数组,但是正则表达式必须指定全局g属性才能返回所有匹配,不指定g属性则会返回一个只有一个元素的数组。

    exec永远返回与第一个匹配相关的信息,其返回数组包括第一个匹配的字串,所有分组的反向引用。

    开始的时候,正则表达式后面我加了g,使用了match,死活获取不到括号内的内容,莫名其妙,后面搜了match exec。我去,这两个基友的区别真大!都怪当时看JAVASCRIPT权威指南的时候太傲,忽略了细节。以后绝对要细心。

  • 相关阅读:
    Mesos-DNS
    秒杀系统
    Springboot配置Druid多数据源
    Android vitals 帮您解决应用质量问题
    Android vitals 帮您解决应用质量问题 (下篇)
    Android Sunflower 带您玩转 Jetpack
    Android Smart Linkify 支持机器学习
    Android Pie SDK 与 Kotlin 更合拍
    Android P 中的新文本特性
    Android P Beta 2 及终版 API 强势来袭!
  • 原文地址:https://www.cnblogs.com/geilishu/p/5125823.html
Copyright © 2011-2022 走看看