RegEx JS从另一个字符串中提取字符串匹配标准

时间:2017-10-09 15:51:36

标签: 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, 111, 23)

基本上,如何选择以rgb开头并以parenthesis )结尾的字符串?

2 个答案:

答案 0 :(得分:2)

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

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