2014-04-15 110 views
0

得到身體的背景色我有這個字符串:我需要用正則表達式

"body{ 
    background-color: #dfdfdf; 
} 
" 

我需要的背景顏色(#dfdfdf)。顏色也可以是rgba(120,120,120),所以我需要用正則表達式來獲得該顏色。 我已經試過:

^(?=background\-color:\s?)[^;]+$ 

,但它不工作

+0

你想整行或只是顏色代碼是否一致? –

+0

只是顏色代碼 – Eduardo

+0

沒有。我找不到解決方案 – Eduardo

回答

0

你需要讓空白的行\s*因爲你匹配整行(開始用^匹配開始和$匹配結束),你在該行的結尾需要一個;因爲你已經說:「一個或多個非分號字符到行的末尾」

^\s*background\-color:\s?([^;]+);$ 

編輯:括號捕獲組獲取更多信息see here

+0

沒有工作:看看這個http://regexr.com/38n2h – Eduardo

+0

,這裏是固定的:http://regexr.com/38n2k你錯過了'^和$'符號和需要在該示例中啓用多行標記 –

+0

我只需要匹配顏色代碼,而不是要提取它的行 – Eduardo

1

這工作:

/\s*background-color:\s*(#[a-fA-F\d]{6})/ 

使用match()方法測試的字符串。它接受一個正則表達式參數,並返回一個包含結果的數組,如果匹配或否則爲null

+0

是的,但我只需要背景顏色屬性的顏色代碼。如果我有另一個CSS規則,比如顏色,文字顏色,會怎麼樣? – Eduardo

+0

@edwardoyarzun我編輯了我的答案。覈實 –

1

以上答案僅限於顏色#dfdfdf。這裏有一個工程:

/\s*background-color:\s*(\#[\w]{6}|rgba\(\d{3},\d{3},\d{3}\))/ 

或:

/\s*background-color:\s*(\#[\w]+|rgba\(\d+,\d+,\d+\))/ 

但我寧願使用第一個,因爲它規定了需要的字母或數字量。 你可以看到我甚至添加了你問的rgba解決方案。因此,將匹配 「#dfdfdf」, 「體{背景色:#dfdfdf;}」 中和 「RGBA(120120120)」, 「體{背景色:RGBA(123234233);}」

編輯: 關於它的思考,顏色也可以是RGB,甚至顏色名稱,所以這裏是最好的解決辦法:

/\s*background-color:\s*([\w(),#]+)/