更换字符串的eval()| JavaScript的

Mac*_*Mac 1 javascript replace eval

是否有可能使用正则表达式的字符串替换数组可以eval用来执行和返回我需要通过此方法完成的函数的值:

var message = $('#message').html();

var searchstring = [
    /<span style="color: rgb((.*), (.*), (.*));">(.*)<\/span>/gi,
    // other regex
];

var replacestring = [
    eval('RGBtoHex($1, $2, $3)'),
    // other regex
];

for(i = 0; i < searchstring.length; i++)
{
    message = message.replace(searchstring[i], replacestring[i]);
}

$('.message-box').val(message);
Run Code Online (Sandbox Code Playgroud)

我正在尝试将RGB转换为十六进制值,因此它应该更改为:rgb(255, 255, 255)to #FFFFFF.但是,当我这样做时,它在Firebug中说:$1 is not defined这是为了这个:eval('RGBtoHex($1, $2, $3)'),.

如何eval()在执行字符串替换时执行函数将rgb返回到十六进制值.replace()

除了eval部分外,一切都很完美.

SLa*_*aks 6

它不像那样工作.
当你打电话时eval,你正在eval使用原始字符串'RGBtoHex($1, $2, $3)'.

您需要将函数传递给replace:

message.replace(
    /rgb\((\d+), (\d+), (\d+)\)/gi, 
    function(str, r, g, b) { return RGBtoHEX(r, g, b); }
);
Run Code Online (Sandbox Code Playgroud)