Rgb颜色和十六进制颜色值的相互转换「建议收藏」

Rgb颜色和十六进制颜色值的相互转换「建议收藏」前言:最近答了各大厂的笔试题,答得都很不好,还是基础太差了,尤其在正则表达式方面老是不会写,今天就做两个练习题巩固一下。一.将rgb颜色值转换为十六进制值输出,转换前验证rgb的格式是否正确关于这个题主要就是考察正则表达式的运用了1.验证rgb的正则表达式:varreg=/^rgb\((\s*[1-2]?[0-9]?[0-9]{1}\,)(\s*[1-2]?[0-9]?[0-9]{1

大家好,欢迎来到IT知识分享网。

前言:最近答了各大厂的笔试题,答得都很不好,还是基础太差了,尤其在正则表达式方面老是不会写,今天就做两个练习题巩固一下。


一. 将rgb颜色值转换为十六进制值输出,转换前验证rgb的格式是否正确

关于这个题主要就是考察正则表达式的运用了

1 . 验证rgb的正则表达式:

var reg = /^rgb\((\s*[1-2]?[0-9]?[0-9]{ 
   1}\,)(\s*[1-2]?[0-9]?[0-9]{ 
   1}\,)(\s*[1-2]?[0-9]?[0-9]{ 
   1})\)$/;

2 . 如何获取rgb中的颜色值 :

方法一:

var matches = reg.exec(rgb);
console.log(matches[1], matches[2], matches[3]);

方法二:

console.log(RegExp.$1, RegExp.$2, RegExp.$3);

3 . 完整代码:

function changeRgbColorToHex(rgbColor){ 
   

        var reg = /^rgb\((\s*[1-2]?[0-9]?[0-9]{1}\,)(\s*[1-2]?[0-9]?[0-9]{1}\,)(\s*[1-2]?[0-9]?[0-9]{1})\)$/;

        if (reg.test(rgbColor)){
            var matches = reg.exec(rgbColor);
            var hexColor = '#';
            for (var i = 1; i <= 3; i++){
                if (parseInt(matches[i]) < 16){
                    hexColor += '0' + parseInt(matches[i]).toString(16)
                }else{
                    hexColor += parseInt(matches[i]).toString(16);
                }
            }
        }

        return hexColor;
    }

二. 十六进制颜色值转换为Rgb颜色值

相比上一个转换的正则,这个正则简单多了,不做多的解释直接上代码:

function changeHexColorToRgb(hexColor){ 
   
        var hex = '#f0f0f0';
        var reg = /^\#[a-fA-f0-9]{6}$/;
        if (reg.test(hex)){
            var rgbColor = 'rgb('
            for (var i = 1; i < hexColor.length; i+=2){
                var str = hexColor[i] + hexColor[i + 1];
                if (i < 5){
                    rgbColor += parseInt(str, 16) + ',';
                }else{
                    rgbColor += parseInt(str, 16) + ')';
                }

            }
        }

        return rgbColor;
    }

三. 运行结果

var hexColor = changeRgbColorToHex('rgb(255, 0, 0)');
var rgbColor = changeHexColorToRgb('#f0d0c0');
console.log(hexColor, rgbColor);

这里写图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25126.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信