描述 (from 牛客网)
将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff1. rgb 中每个 , 后面的空格数量不固定
2. 十六进制表达式使用六位小写字母
3. 如果输入不符合 rgb 格式,返回原始输入
示例1
输入:'rgb(255, 255, 255)'输出:
#ffffff
--------------------------------------------------------------------------------------个人笔记
function rgb2hex(sRGB) {
// rgb 格式
const pattern = /^rgb\(\d{1,3},\s*\d{1,3},\s*\d{1,3}\)$/
if (!pattern.test(sRGB.trim())) { return sRGB; }
// rgb 数值大小
const matches = sRGB.match(/\d{1,3}/g);
const result = matches.some((item) => parseInt(item, 10) > 255);
if (result) { return sRGB; }
// 转换进制
const arr = matches.map((item) => parseInt(item, 10).toString(16).padStart(2, "0"));
return "#" + arr.join('');
}