ubb正则转换

// html 转 ubb
var htmlToBBCode = function (html) {
    html = html.replace(/\[/gi, "&lBrac");
    html = html.replace(/\]/gi, "&rBrac");
    // html = html.replace(/<b>/gi, "[b]");
    html = html.replace(/<i>/gi, "[i]");
    html = html.replace(/<u>/gi, "[u]");
    // html = html.replace(/<\/b>/gi, "[/b]");
    html = html.replace(/<\/i>/gi, "[/i]");
    html = html.replace(/<\/u>/gi, "[/u]");
    html = html.replace(/<s>/gi, "[s]");
    html = html.replace(/<\/s>/gi, "[/s]");
    html = html.replace(/<em>/gi, "[i]");
    html = html.replace(/<\/em>/gi, "[/i]");
    html = html.replace(/<strong>/gi, "[b]");
    html = html.replace(/<\/strong>/gi, "[/b]");
    html = html.replace(/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/gi, "[url=$2]$4[/url]");
    html = html.replace(/<span class="nb" style="text-align:( )?(.*?)(;)?">(.*?)<\/span>$/gi, "[$2]$4[/$2]");
    html = htmlToBBCodeParseSpan(html);

    return html;
}

var htmlToBBCodeParseSpan = function (html) {
    if (html.match(/<span[^>]*>/gi)) {
        var found = html.match(/<span[^>]*>[^>]*<\/span>/gi);
        found.forEach(function(v) {
            html = html.replace(v, htmlToBBCodeReplaceSpan(v));
        });
        return htmlToBBCodeParseSpan(html);
    } else {
        return html
    }
}

var htmlToBBCodeReplaceSpan = function (html) {
    html = html.replace(/<span style="font-family:(.*?)">(.*?)<\/span>/gi, "[font=$1]$2[/font]");
    html = html.replace(/<span style="font-size:(.*?)px">(.*?)<\/span>/gi, "[size=$1]$2[/size]");
    html = html.replace(/<span style="color:(.*?)">(.*?)<\/span>/gi, "[color=$1]$2[/color]");
    html = html.replace(/<span style="background-color:(.*?)">(.*?)<\/span>/gi, "[bgcolor=$1]$2[/bgcolor]");
    html = html.replace(/<span>(.*?)<\/span>/gi, "$1");

    return html;
}

// ubb 转 html
var BBCodeToHtml = function (bbcode) {
    bbcode = bbcode.replace(/&amp;lBrac/gi, '[')
    bbcode = bbcode.replace(/&amp;rBrac/gi, ']')
    bbcode = bbcode.replace(/&amp;nbsp;/g, ' ')
    bbcode = bbcode.replace(/&amp;lt;/g, '&lt')
    bbcode = bbcode.replace(/&amp;gt;/g, '&gt')
    bbcode = bbcode.replace(/&amp;amp;/g, '&amp;')
    bbcode = bbcode.replace(/\[i\]/gi, "<em>");
    bbcode = bbcode.replace(/\[\/i\]/gi, "</em>");
    bbcode = bbcode.replace(/\[b\]/gi, "<strong>");
    bbcode = bbcode.replace(/\[\/b\]/gi, "</strong>");
    bbcode = bbcode.replace(/\[u\]/gi, "<u>");
    bbcode = bbcode.replace(/\[\/u\]/gi, "</u>");
    bbcode = bbcode.replace(/\[s\]/gi, "<s>");
    bbcode = bbcode.replace(/\[\/s\]/gi, "</s>");
    bbcode = bbcode.replace(/\[bgcolor=(.*?)\]/gi, '<span style="background-color:$1">')
    bbcode = bbcode.replace(/\[font=(.*?)\]/gi, '<span style="font-family:$1">')
    bbcode = bbcode.replace(/\[size=(.*?)\]/gi, '<span style="font-size:$1px;">')
    bbcode = bbcode.replace(/\[color=(.*?)\]/gi, '<span style="color:$1">')
    bbcode = bbcode.replace(/\[left\]/gi, '<span class="nb" style="text-align: left;">')
    bbcode = bbcode.replace(/\[center\]/gi, '<span class="nb" style="text-align: center;">')
    bbcode = bbcode.replace(/\[right\]/gi, '<span class="nb" style="text-align: right;">')
    bbcode = bbcode.replace(/\[\/(left|center|right)\]/gi, '</span>')
    bbcode = bbcode.replace(/\[\/(font|size|bgcolor|color)\]/gi, "</span>");

    bbcode = bbcode.replace(/\[url=(.*?)\](.*?)\[\/url\]/gi, '<a href="$1">$2<\/a>')
    return bbcode;
}

// ubb对齐方式预览
function BBcodeToShare(bbcode) {

  bbcode = bbcode.replace(/\[left\]/gi, '<p class="nb" style="text-align: left;">')
  bbcode = bbcode.replace(/\[center\]/gi, '<p class="nb" style="text-align: center;">')
  bbcode = bbcode.replace(/\[right\]/gi, '<p class="nb" style="text-align: right;">')
  bbcode = bbcode.replace(/\[\/(left|center|right)\]/gi, '</p>')

  bbcode = BBCodeToHtml(bbcode)
  return bbcode
}

// ubb清除
var BBCodeToEmpty = function (bbcode) {
    bbcode = bbcode.replace(/\[i\]/gi, "");
    bbcode = bbcode.replace(/\[\/i\]/gi, "");
    bbcode = bbcode.replace(/\[b\]/gi, "");
    bbcode = bbcode.replace(/\[\/b\]/gi, "");
    bbcode = bbcode.replace(/\[u\]/gi, "");
    bbcode = bbcode.replace(/\[\/u\]/gi, "");
    bbcode = bbcode.replace(/\[s\]/gi, "");
    bbcode = bbcode.replace(/\[\/s\]/gi, "");
    bbcode = bbcode.replace(/\[bgcolor=(.*?)\]/gi, '')
    bbcode = bbcode.replace(/\[font=(.*?)\]/gi, '')
    bbcode = bbcode.replace(/\[size=(.*?)\]/gi, '')
    bbcode = bbcode.replace(/\[color=(.*?)\]/gi, '')
    bbcode = bbcode.replace(/\[left\]/gi, '')
    bbcode = bbcode.replace(/\[center\]/gi, '')
    bbcode = bbcode.replace(/\[right\]/gi, '')
    bbcode = bbcode.replace(/\[\/(left|center|right)\]/gi, '')
    bbcode = bbcode.replace(/\[\/(font|size|bgcolor|color)\]/gi, "");

    bbcode = bbcode.replace(/\[url=(.*?)\](.*?)\[\/url\]/gi, '')
    return bbcode;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容