将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff
1. rgb 中每个 , 后面的空格数量不固定
2. 十六进制表达式使用六位小写字母
3. 如果输入不符合 rgb 格式,返回原始输入
示例1
输入
'rgb(255, 255, 255)'
输出
#ffffff
function rgb2hex(sRGB) { var regexp=/^rgb(d+\,s*d+\,s*d+)$/; if(!regexp.test(sRGB)){ return sRGB; }else{ var pattern = /d+/g; var matches = sRGB.match(pattern); // console.log(matches); var str = "#"; for(var i=0; i<matches.length; i++){ var m = Number(matches[i]); // console.log(m.toString(16)); if(m<=255 && m>=0){ str+=(m<16?'0'+m.toString(16):m.toString(16)); }else{ return sRGB; } } return str; } } console.log(rgb2hex('rgb(255, 10, 255)')); //#ff0aff
参考链接: 牛客网-颜色字符串转换