简洁、易读
1. 先判断是否匹配格式
2. parseInt('255 ', 10) 是等于255的,空格不用处理
3. 注意转化16进制字符需要补全2位
function rgb2hex(sRGB) { let reg = /^rgb\(\d+,\d+,\d+\)$/; if (!reg.test(sRGB)) return sRGB; sRGB = sRGB.slice(sRGB.indexOf('(') + 1, -1); let arr = sRGB.split(','); let ans = '#'; for (let v of arr) { let n = parseInt(v, 10); if (n < 0 || n > 255) return sRGB; ans += ('0' + n.toString(16)).slice(-2); } return ans; }