颜色字符串转换(正则)
Posted 大黑ylx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了颜色字符串转换(正则)相关的知识,希望对你有一定的参考价值。
题目描述
将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff
1. rgb 中每个 , 后面的空格数量不固定
2. 十六进制表达式使用六位小写字母
3. 如果输入不符合 rgb 格式,返回原始输入
代码
1 function rgb2hex(sRGB) {
2 var rgb = /rgb\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\)/;
3 var rgbArr = sRGB.match(rgb);//rgbArr = {rgb(255, 255, 255),255,255,255}
4 /*var rgb = /rgb\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\)/g
5 //rgb = {rgb(255, 255, 255)}*/
6 var str = "#"; //颜色值
7 if(!rgbArr){ //不符合正则匹配
8 return sRGB;
9 }
10 else {
11 for(var i = 1 ; i<4; i++){
12 var rgbIndex = parseInt(rgbArr[i]);
13 if(rgbIndex<16 && rgbIndex>=0){
14 str += (\'0\'+rgbIndex.toString(16));//保留两位数
15 }
16 else if(rgbIndex>=16 && rgbIndex<=255){
17 str += rgbIndex.toString(16);
18 }
19 else {
20 return sRGB; //不是颜色值字符
21 }
22 }
23 return str;
24 }
25 }
来源:牛客网
以上是关于颜色字符串转换(正则)的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript之颜色值相互转换十六进制正则rgbtoStringslicetoUpperCasesplitfiltermapparseInt
JavaScript之颜色值相互转换十六进制正则rgbtoStringslicetoUpperCasesplitfiltermapparseInt