将“rgb(255,255,255)”格式转换为rgb

时间:2015-01-15 11:36:44

标签: javascript

我想知道如何将“rgb(255,255,255)”字符串格式转换为rgb,如:

var rgb = convert("rgb(255, 255, 255)");

并像这样使用它:

this.r = rgb.r;
this.g = rgb.g;
this.b = rgb.b;

到目前为止我发现的是如何转换为\从十六进制到rgb。

谢谢

2 个答案:

答案 0 :(得分:3)

我能找到更简单的方法:

var convert = function(rgb)
{    
    var s = rgb.replace(/[^\d\s]/g, '').split(' ');

    return {
        r: s[0],
        g: s[1],
        b: s[2]
    };
}

console.log(convert("rgb(255, 255, 255)"));

Fiddle

这不会转换任何东西。只需提取字符串的信息并放入对象中。

<强>更新

对于@minmaxavg的建议,为了使用百分比值,只需对正则表达式稍作修改:

/[^\d\s%]/g

答案 1 :(得分:2)

您可以使用简单的正则表达式匹配rgb({number}, {number}, {number}):

function convertRgb(rgb) {
    // results contains e.g. ["rgb(255, 255, 255)", "255", "255", "255"]
    var results = /^rgb\((\d{1,3}), (\d{1,3}), (\d{1,3})\)$/.exec(rgb);
    return {
        r: results[1],
        g: results[2],
        b: results[3],
    };
}

var rgb = convertRgb("rgb(255, 255, 255)");
console.dir(rgb);