我想知道如何将“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。
谢谢
答案 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)"));
这不会转换任何东西。只需提取字符串的信息并放入对象中。
<强>更新强>
对于@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);