我需要使用Regexp获取正文背景颜色

时间:2014-04-15 01:11:43

标签: javascript regex colors expression

我有这个字符串:

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

我需要背景颜色(#dfdfdf)。颜色也可以是rgba(120,120,120),所以我需要用正则表达式获得那种颜色。 我试过了:

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

但它不起作用

3 个答案:

答案 0 :(得分:1)

这有效:

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

使用match()方法测试字符串。它采用正则表达式参数,如果匹配则返回包含结果的数组,否则返回null

答案 1 :(得分: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" in" body {background-color:#dfdfdf;}"和" rgba(120,120,120)" in" body {background-color:rgba(123,234,233);}"

修改 考虑到它,颜色也可能是rgb甚至颜色名称,所以这是最好的解决方案:

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

答案 2 :(得分:0)

您需要在行\s*的开头允许空白,因为您匹配整行(^匹配开头,$匹配结尾),您需要因为你说“直到行尾”有一个或多个非分号字符,所以在行尾有一个;

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

编辑:括号捕获该组以获取更多信息see here