我有这个字符串:
"body{
background-color: #dfdfdf;
}
"
我需要背景颜色(#dfdfdf)。颜色也可以是rgba(120,120,120),所以我需要用正则表达式获得那种颜色。 我试过了:
^(?=background\-color:\s?)[^;]+$
但它不起作用
答案 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。