我有这种类型的字符串:
url('img.png') rgba(123, 111, 23, 0.96) none repeat scroll 0% 0% / auto padding-box padding-box
url('img.png') rgb(123, 111, 23) none repeat scroll 0% 0% / auto padding-box padding-box
注意rgb / rgba差异
我需要仅提取rgba(123, 111, 23, 0.96)
或rgb(123, 111, 23)
基本上,如何选择以rgb
开头并以parenthesis )
结尾的字符串?
答案 0 :(得分:2)
您可以/rgba?\(.*?\)/
使用String.match
方法; rgba?
匹配rgb
或rgba
,\(.*?\)
匹配后面的第一对括号,假设您没有嵌套的括号:
var samples = ["url('img.png') rgba(123, 111, 23, 0.96) none repeat scroll 0% 0% / auto padding-box padding-box",
"url('img.png') rgb(123, 111, 23) none repeat scroll 0% 0% / auto padding-box padding-box"]
console.log(
samples.map(s => s.match(/rgba?\(.*?\)/))
)
// if have more than one matches in the strings
console.log(
samples.map(s => s.match(/rgba?\(.*?\)/g))
)
答案 1 :(得分:0)
除了正则表达式方法,您还可以尝试这样的
var str = "url('img.png') rgba(123, 111, 23, 0.96) none repeat scroll 0% 0% / auto padding-box padding-box";
return "rgb"+str.split('rgb').pop().split(')').shift()+")";