求个转换格式的正则

<span style=\"font-size: small; color: rgb(230, 0, 0);\">萨达</span>

求个正则把上面这种html的格式转换成下面这种ugui格式

<color=#E60000>萨达</color>

阅读 2.1k
2 个回答
/<span.*(?=color:\s*?rgb\((.*)\))*.>(.*)<\/span>/

不知道能不能满足你的需求 你可以在rgb后面在详细匹配,现在匹配出来的是这个
image.png
剩下的逗号分隔然后转16进制,相信你也会

function rgb2hex() {
    var hex = "#";
    for (var i = 0; i < arguments.length; ++i) {
        hex += ("0" + (arguments[i] | 0).toString(16)).slice(-2);
    }
    return hex.toUpperCase();
}
var reg = /<span.*(color): rgb\((\d+), (\d+), (\d+)\);.*>(.*)<\/span>/;
var str = "<span style=\"font-size: small; color: rgb(230, 0, 0);\">萨达</span>";
var html = str.replace(reg, function(match, $1, $2, $3, $4, $5) {
    return "<" + $1 + "=" + rgb2hex($2, $3, $4) + ">" + $5 + "</" + $1 + ">";
});
console.dir(html);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题