正則表達式獲取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[^>]*>([\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權威指南的時候太傲,忽略了細節。以后絕對要細心。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM