如何使用regex + replace将css样式的javascript字符串中的rgb值更改为十六进制值

Rob*_*lor 2 regex replace

我一直在努力解决这个问题,所以我想我会问这里是否有人可以帮助我.

我在javascript中有一串css样式,如下所示:

width: 250px; background-color: rgb(48, 44, 48);
Run Code Online (Sandbox Code Playgroud)

我试图通过一个我称为RGBtoHEX的函数运行它来替换字符串中的rgb值与十六进制值,所以我留下了如下所示的字符串:

width: 250px; background-color: #302C30;
Run Code Online (Sandbox Code Playgroud)

我正在努力创建正则表达式以从主字符串中获取rgb字符串以传递给函数.

对此的任何帮助都会很棒.

谢谢你的期待

Gum*_*mbo 11

尝试这样的事情:

str.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);
    })
Run Code Online (Sandbox Code Playgroud)