用十六进制替换多个div中的rgb值

时间:2015-04-16 13:30:22

标签: javascript jquery html css

我试图找出一种方法来替换字符串(包含HTML代码)中的所有rgb值和十六进制等效值。

我发现了一个转换rgb2hex的小函数,但我似乎无法找到一种方法来替换字符串中的多个rgb值。有人可以指导我正确的方向,我需要做什么?

这是字符串的示例,我试图用相关的十六进制代码替换每个rgb值

//example need help 
var test = '
<div style="background-color:rgb(21,233,21)"></div>
<div style="background-color:rgb(43,123,43)"></div>
'

我在这里创造了一个基本的小提琴https://jsfiddle.net/Ldq3ckh0/

非常感谢任何正确方向的帮助或指导!

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式:

test.replace(/rgb\([^\)]+\)/g, function(rgb) {
    return rgb2hex(rgb);
});

FIDDLE

答案 1 :(得分:0)

感谢大家的帮助。我通过使用以下代码

设法使其工作
                var test = "width: 250px; background-color: rgb(48, 44, 48); background-color: rgb(23, 212, 23);"

                var output = test.replace(
                    /\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,
                    function($0, $1, $2, $3) {
                        return "#" + ("0"+Number($1).toString(16)).substr(-2) + ("0"+Number($2).toString(16)).substr(-2) + ("0"+Number($3).toString(16)).substr(-2);
                    })