Javascript 正则表达式JS从另一个字符串中提取字符串匹配标准

Javascript 正则表达式JS从另一个字符串中提取字符串匹配标准,javascript,regex,Javascript,Regex,我有这种类型的字符串: 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,

我有这种类型的字符串:

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
开头并以
括号结尾的字符串

您可以使用
/rgba?\(.*?)/
字符串匹配
方法
rgba?
匹配
rgb
rgba
\(.*?)
匹配后面的第一对括号,假设没有嵌套括号:

var samples=[“url('img.png')rgba(123、111、23、0.96)无重复滚动0%0%/自动填充框填充框”,
“url('img.png')rgb(123、111、23)无重复滚动0%0%/自动填充框填充框”]
console.log(
samples.map(s=>s.match(/rgba?\(.*?\)/)
)
//如果字符串中有多个匹配项
console.log(
samples.map(s=>s.match(/rgba?\(.*?\)/g))

)
除了正则表达式方法之外,您还可以尝试以下方法

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()+")"; 

它起作用了!!我现在很好奇…它只是第一次出现rgb/rgba。。。如果有多个呢?您可以使用全局标志
g
来匹配多个事件
/rgba?\(.*?\)/g
应该可以工作。