当前位置:首页 > JavaScript

js实现ubb

2026-03-14 05:37:33JavaScript

UBB 标签的基本概念

UBB(Universal Bulletin Board)是一种基于文本的标记语言,常用于论坛和社区中。它允许用户通过简单的标签实现文本格式化,如加粗、斜体、链接等。UBB 标签通常由方括号 [] 包围,例如 [b]加粗文本[/b]

实现 UBB 解析的核心思路

UBB 解析的核心是将 UBB 标签转换为对应的 HTML 标签。可以通过正则表达式匹配 UBB 标签,并将其替换为 HTML 标签。以下是常见的 UBB 标签及其对应的 HTML 实现方式:

常见 UBB 标签的解析方法

加粗标签 [b]

text = text.replace(/\[b\](.*?)\[\/b\]/g, '<strong>$1</strong>');

斜体标签 [i]

text = text.replace(/\[i\](.*?)\[\/i\]/g, '<em>$1</em>');

下划线标签 [u]

text = text.replace(/\[u\](.*?)\[\/u\]/g, '<u>$1</u>');

链接标签 [url]

// 带 URL 的链接
text = text.replace(/\[url=(.*?)\](.*?)\[\/url\]/g, '<a href="$1">$2</a>');
// 不带 URL 的链接
text = text.replace(/\[url\](.*?)\[\/url\]/g, '<a href="$1">$1</a>');

图片标签 [img]

text = text.replace(/\[img\](.*?)\[\/img\]/g, '<img src="$1" alt="图片" />');

颜色标签 [color]

text = text.replace(/\[color=(.*?)\](.*?)\[\/color\]/g, '<span style="color:$1">$2</span>');

完整 UBB 解析函数示例

以下是一个完整的 UBB 解析函数,支持常见的 UBB 标签:

function parseUBB(text) {
    // 加粗
    text = text.replace(/\[b\](.*?)\[\/b\]/g, '<strong>$1</strong>');
    // 斜体
    text = text.replace(/\[i\](.*?)\[\/i\]/g, '<em>$1</em>');
    // 下划线
    text = text.replace(/\[u\](.*?)\[\/u\]/g, '<u>$1</u>');
    // 链接(带 URL)
    text = text.replace(/\[url=(.*?)\](.*?)\[\/url\]/g, '<a href="$1">$2</a>');
    // 链接(不带 URL)
    text = text.replace(/\[url\](.*?)\[\/url\]/g, '<a href="$1">$1</a>');
    // 图片
    text = text.replace(/\[img\](.*?)\[\/img\]/g, '<img src="$1" alt="图片" />');
    // 颜色
    text = text.replace(/\[color=(.*?)\](.*?)\[\/color\]/g, '<span style="color:$1">$2</span>');
    // 换行(UBB 通常用 \n,HTML 用 <br>)
    text = text.replace(/\n/g, '<br>');
    return text;
}

安全性注意事项

直接解析 UBB 并插入 HTML 可能存在 XSS(跨站脚本攻击)风险。为了避免安全问题,建议对输入的文本进行转义处理:

function escapeUBB(text) {
    return text.replace(/</g, '&lt;').replace(/>/g, '&gt;');
}

// 使用方式
const safeText = escapeUBB(originalText);
const html = parseUBB(safeText);

扩展 UBB 功能

如果需要支持更多 UBB 标签(如表格、列表等),可以扩展正则表达式规则。例如:

列表标签 [list]

text = text.replace(/\[list\](.*?)\[\/list\]/g, '<ul>$1</ul>');
text = text.replace(/\[\*\](.*?)(\n|$)/g, '<li>$1</li>');

引用标签 [quote]

js实现ubb

text = text.replace(/\[quote\](.*?)\[\/quote\]/g, '<blockquote>$1</blockquote>');

测试示例

const ubbText = '[b]加粗文本[/b] [i]斜体文本[/i] [url=https://example.com]链接[/url]';
const htmlText = parseUBB(ubbText);
console.log(htmlText);
// 输出: <strong>加粗文本</strong> <em>斜体文本</em> <a href="https://example.com">链接</a>

通过以上方法,可以实现基本的 UBB 解析功能,并根据需求扩展更多标签支持。

标签: jsubb
分享给朋友:

相关文章

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…