如何在JavaScript中将字符串中出现的不确定数量的rgb转换为十六进制?

如何在JavaScript中将字符串中出现的不确定数量的rgb转换为十六进制?,javascript,css,hex,rgb,fireworks,Javascript,Css,Hex,Rgb,Fireworks,Fireworks CS6包含一个面板,用于复制选定对象的CSS3属性 但是,代码过于冗长和混乱,因此我想用JavaScript编写一个扩展来清理它 我已经做了我所需要的一切,除了弄清楚如何将任意数量的rgb值转换成更小的十六进制代码 例如,它为渐变返回的典型字符串可能包括: background: -moz-linear-gradient(50% 0% -87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,2

Fireworks CS6包含一个面板,用于复制选定对象的CSS3属性

但是,代码过于冗长和混乱,因此我想用JavaScript编写一个扩展来清理它

我已经做了我所需要的一切,除了弄清楚如何将任意数量的rgb值转换成更小的十六进制代码

例如,它为渐变返回的典型字符串可能包括:

background: -moz-linear-gradient(50% 0% -87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%); 
background: -ms-linear-gradient(-87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%);
background: -o-linear-gradient(-87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%);
background: -webkit-gradient(linear,50% 0%,55% 100%, color-stop(0, rgb(0,0,0)), color-stop(0.28, rgb(0,255,64)), color-stop(0.4, rgb(0,177,122)), color-stop(0.68, rgb(0,0,255)), color-stop(0.76, rgb(37,37,230)), color-stop(1, rgb(153,153,153)));
background: -webkit-linear-gradient(-87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%);
background: linear-gradient(-87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%);
border-color: rgb(198,34,221);

我已经有了一个函数,可以将r、g、b值转换为它们的十六进制等价值,但我不确定如何循环字符串并隔离rgb组件并转换每个组件。

如果您只想捕获这个精确的语法-带有三个十进制数且没有空格的rgb,那么
string.replace(/rgb\(\d+),(\d+),(\d+)\/g,您的函数)
就可以了。第一个参数是整个rgb()序列,接下来的三个参数是R、G和B数字。您将需要返回新字符串来替换整个rgb()。

如果您只想捕获这个精确的语法-rgb包含三个不带空格的十进制数字,那么
字符串。替换(/rgb\((\d+),(\d+),(\d+)/g,yourFunction)
就可以了。第一个参数是整个rgb()序列,接下来的三个参数是R、G和B数字。您将需要返回新字符串以替换整个rgb()。

请务必小心-带有Alpha组件的十六进制代码几乎不会得到处理。请务必小心-带有Alpha组件的十六进制代码几乎不会得到处理。