假设我们在元素上设置背景如下:
我想要的是提取背景颜色值,而不是url()中的值。
答案 0 :(得分:2)
您可以使用:
(?:background:\s")(.+)(?:")
说明:
(?:background:\s")
非捕获组
background:
匹配字符背景:字面意思(区分大小写)
\s
匹配任何空格字符[\r\n\t\f ]
"
字面匹配字符"
第一个捕获小组(.+)
.+
匹配任何字符(换行符除外)
(?:")
非捕获组
"
字面匹配字符"
答案 1 :(得分:1)
我去了
background:\s"(.+)"
这样您可以假设\s
之后只有空格("
)和background
。如果在url
之后background
出现并且您不需要任何前瞻,那么它就不会匹配。
修改强>
根据你的第三和第四个例子,上面的正则表达式显然不会起作用。
background:\s(?:"(.+)"|(?!url)(\w+)|url\(.+\) (.+?)\s)
这个将匹配您的所有示例案例。
说明:
background:\s #matches "background: " literally
(?: #start of non-capturing group
"(.+)" #matches characters enclodes by "" (Example 1)
| #OR
(?!url) #negative lookahead: if "url" comes afterwards, this isn't a match
(\w+) #matches mupltiple characters (Example 3)
| #OR
url\( #matches "url(" literally
.+ #matches multiple characters
\) #matches ") " literally
(.+?)\s #matches multiple characters until the next whitespace (Example 4)
) #end of non-capturing group