2014-04-15 58 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(),#]+)/