快速正则表达式/替换各种 rgb/rgba 字符串中的 rgba(..)

gen*_* b. 0 javascript regex jquery

我有各种颜色定义如下,

i.cat1{background:rgb(249, 115, 0);}  // RGB with 3 params
i.cat2{background:rgba(14, 48, 71, 0.99);}  // RGBA with 4 params
Run Code Online (Sandbox Code Playgroud)

我的目标是设置一个新的rgba(x,y,z,opacity)预定义不透明度变量,例如 0.4(无论以前的不透明度是否存在);但从x,y,z保证存在的现有值来看。

前任。

from #1:   rgb(249,115,0)      --> rgba(249,115,0,0.4)
from #2:   rgba(14,48,71,0.99) --> rgba(14,48,71,0.4)
Run Code Online (Sandbox Code Playgroud)

除了解析括号内的标记并检查它是 3 个还是 4 个参数之外,还有什么快速的正则表达式解决方案吗?

当然,我们可以作为str.replace('rgb(', 'rgba(');第一步,但我只想要一个快速的 4 参数表达式。

假设我将当前颜色作为字符串获取,即var color原始 str,所以这是一个正则表达式问题。

Tot*_*oto 5

var test = [
    "rgb(249,115,0)",
    "rgba(14,48,71,0.99)",
];
console.log(test.map(function (a) {
  return a.replace(/rgba?(\(\s*\d+\s*,\s*\d+\s*,\s*\d+)(?:\s*,.+?)?\)/, 'rgba$1,0.4)');
}));
Run Code Online (Sandbox Code Playgroud)