Javascript RegExp解析IRC颜色代码

时间:2015-12-06 12:49:08

标签: javascript jquery html regex

我尝试以\u00030\u000315的格式解析IRC颜色代码。 我将所有RGB颜色添加到一个表中,并使用它循环遍历它们:

console.log(i + ">" + '\\u0003'+i + ">" + colors[i]);
var re = new RegExp("\\u0003"+i, 'gi');
console.log(re + " > " + '</span><span style="color:' + colors[i]+ ';">');

我得到了这个输出:

tools.php:337 15>\u000315>rgb(210,210,210)
tools.php:339 /\u000315/gi > </span><span style="color:rgb(210,210,210);"> 
tools.php:337 14>\u000314>rgb(127,127,127)
tools.php:339 /\u000314/gi > </span><span style="color:rgb(127,127,127);"> 
tools.php:337 13>\u000313>rgb(255,0,255)
tools.php:339 /\u000313/gi > </span><span style="color:rgb(255,0,255);"> 
tools.php:337 12>\u000312>rgb(0,0,252)

html.replace(re, "<span stuff>");

时,没有任何变化

将其硬编码为html.replace(/\\u00314/gi, '</span><span style="color: rgb(127,127,127);">');也不会产生任何结果..

我试图解析的东西:

\u0002\u000314:: \u00037Channel Name \u000314:: \u00030SITE: \u00034UP \u000314:: \u00030IRC BONUS: \u00034OFFLINE \u000314:: \u00030SIGNUPS: \u00034CLOSED \u000314::\u000f
我似乎错过了一些东西。 \u\\u没有任何区别,gigi或者没有任何区别,总而言之它似乎就是这样根本不解决任何问题。

我发现的事情是,如果我放弃RegExp并因此仅使用html.replace("\\u00314", '</span><span style="color: rgb(127,127,127);">');的修饰符替换第一次出现,但这还不够。

我有什么明显的遗失吗?

1 个答案:

答案 0 :(得分:1)

最终的代码是下面的代码。将字符串保存到变量而不是在函数中执行+i是有效的

            var val = $('textarea#topic').val();
            var html = "<span style=\"color: #fff;\">" + val + "</span>";
            var colors = [
                "rgb(0,147,0)",
                "rgb(0,0,0)",
                "rgb(0,0,127)",
                "rgb(0,147,0)",
                "rgb(255,0,0)",
                "rgb(127,0,0)",
                "rgb(156,0,156)",
                "rgb(252,127,0)",
                "rgb(255,255,0)",
                "rgb(0,252,0)",
                "rgb(0,147,147)",
                "rgb(0,255,255)",
                "rgb(0,0,252)",
                "rgb(255,0,255)",
                "rgb(127,127,127)",
                "rgb(210,210,210)"
            ];
            for(i = (colors.length-1); i >= 0; i--) {
                var index = 0;
                var str = "\\u0003"+i+"";
                while((index = html.indexOf(str, index + 1)) > -1) {
                    html = html.replace(str, '</span><span style="color:' + colors[i]+ ';">');
                    console.log(str + ">" + colors[i]);
                }
                $('div#topictext').html(html);
                done = false;
                setTimeout(setTrue(), 5000);
                while(!done) {
                }
            }
            html = html.replace("\\u0002", "");
            html = html.replace("\\u000f", "");
            $('div#topictext').html(html);