1. 程式人生 > >javacript replace 正則取字串中的值並替換。

javacript replace 正則取字串中的值並替換。

問題:

  在使用ueditor 富文字編輯器,給字型顏色時,發現getCent後的內容顏色為rgb

如 <span style="color: rgb(0, 0, 255);" >aaaaa </spa>
而前端需求rgb的讀取不了,因此要轉成16進位制的顏色。找了uedtitor編輯器一圈,沒找到方法。

因此。我想到的解決方法是,在提交儲存之前,把富文本里的內容找出rgb顏色並替換成16進位制顏色。

解決的js如下

function doSubmit(){
    var content = UE.getEditor('messageTemplate').getContent(); 

    content = content.replace(/rgba?\(\s?\d+\s?,\s?\d+\s?,\s?\d+\s?\)/g,function(){
        return fixColor('color',arguments[0]);
    })

    .......
}

 //rgb顏色 轉16進位制
function fixColor(name,value){

    if (/color/i.test(name) && /rgba?/.test(value)) {
        console.log(value);
        var array = value.split(",");
        if (array.length > 3){
            return "";
        }
        value = "#";
        for (var i = 0, color; color = array[i++];) {
            color = parseInt(color.replace(/[^\d]/gi, ''), 10).toString(16);
            value += color.length == 1 ? "0" + color : color;
        }
        value = value.toUpperCase();
    }
    return  value;
}

 js正則replace 還是好用的哈。

function test(){
    var str = "<color color_tag=\"#112233\">";//目標替換成 <color=#112233>
    str = str.replace(/ color_tag=\"(#.{6})\"/g,function(){
        return "="+arguments[1];
    })
    console.log(str);

}