码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式获取body内容

时间:2016-01-12 23:14:00      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:

最近项目需要,要弄个正则表达式获取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[^>]*>([\s\S]*)<\/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权威指南的时候太傲,忽略了细节。以后绝对要细心。

 

正则表达式获取body内容

标签:

原文地址:http://www.cnblogs.com/geilishu/p/5125823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!