2011-11-10 106 views
-2

我的CSS隨後獲取文本..正則表達式從CSS

<style> 
.body{ 
    width:2px; 
    height:3px; 
    } 
</style> 
<style> 
.anotherOne{ 
    key:value; 
    ........... 
    } 
</style> 

和HTML部分

<div class="body"></div> 

所以,我怎麼能得到價值「身體」類中的第一個樣式標籤?我也想在那裏追加數據,我該如何處理這個JavaScript和正則表達式? 還有其他方法嗎?

我想進去任何東西與".body{" and ending with "}"

編輯開始:預期的結果是width:2px; height:3px;

+0

它是什麼,你要完成?我不認爲正則表達式是這個合適的解決方案 – Aziz

+0

我有一個包含html數據的字符串,我想獲得以'body'選擇器開始的大括號內的值。 – Red

+0

這個CSS在哪裏?在你的網頁分析CSS樣式?在JavaScript的dtring? – jfriend00

回答

1

如果你有一個JavaScript字符串隔離CSS樣式,你可以用這個正則表達式的寬度值:

var re = /\.body\s*\{[^\}]*?width\s*:\s*(.*);/m; 
var matches = str.match(re); 
if (matches) { 
    var width = matches[1]; 
} 

測試用例在這裏:http://jsfiddle.net/jfriend00/jSDeJ/

高度值可以用這個表達式來獲得:

\.body\s*\{[^\}]*?height\s*:\s*(.*);/m; 

如果你只是想文本(不管它是什麼就是body標籤的大括號內,那麼你可以這樣做與此:

var re = /\.body\s*\{([^\}]*?)\}/m; 
var matches = str.match(re); 
if (matches) { 
    var width = matches[1]; 
} 

你可以看到它在這裏工作:http://jsfiddle.net/jfriend00/jSDeJ/3/

如果再想用自己的字符串替換整個。體風格,可以是這樣做的:

var str = " <style>\n.body{\n width:2px; \n height:3px; \n } \n</style>"; 

var re = /(\.body\s*\{)([^\}]*?)(\})/m; 
var newStyle = "width: 20px; \nheight: 1000px;"; 
var result = str.replace(re, "$1" + newStyle + "$3"); 
alert(result); 

你可以看到這裏的工作:http://jsfiddle.net/jfriend00/jSDeJ/8/

+0

我想你應該將正則表達式約束到樣式標記 – andho

+0

我認爲他已經有了字符串中的樣式(這個問題很多都是模糊的)。如果沒有,那麼OP可以先做到這一點。 – jfriend00

+0

它返回'2px'預期的是'width:2px; height:3px; ' – Red