如何使用正则表达式将字符串中方括号内的内容加粗(HTML 格式)

12次阅读

如何使用正则表达式将字符串中方括号内的内容加粗(HTML 格式)

本文介绍如何通过 javascript 正则表达式精准匹配并替换字符串中所有 `[…]` 包裹的文本,将其转换为 `` 加粗 html 片段,并强调对动态内容进行 html 转义以防范 xss 风险。

前端开发中,常需对动态生成的文本做轻量级格式化处理,例如将标记语法(如 [Term])渲染为加粗效果。核心思路是:用正则提取方括号内非]字符的内容,并替换为 HTML 加粗标签

以下是一段简洁可靠的实现:

function boldBracketed(text) {   // 先对原始文本做基础 HTML 转义(防 XSS),再执行替换   const escapeHtml = (str) =>      str.replace(/[&<>"'`]/g, (char) => {       const escapeMap = { '&': '&', '<': 'zuojiankuohaophpcn', '>': 'youjiankuohaophpcn', '"': '"', "'": ''', '`': '`' };       return escapeMap[char];     });    const escaped = escapeHtml(text);   // 匹配 [任意非 ] 字符]+(支持连续多个 ] 的健壮写法,但通常单个 ] 即可)   return escaped.replace(/[([^]]+)]/g, '$1'); }  // 示例使用 const input = '[Number] years of practice in accounting and financial administration. Showcased skills in [Area of Expertise]'; const output = boldBracketed(input); console.log(output); // → Number years of practice in accounting and financial administration. Showcased skills in Area of Expertise

关键说明

  • 正则 /\[([^]]+)\]/g 中:
    • \[ 和 \] 分别匹配字面量 [ 和 ](需双反斜杠转义);
    • ([^]]+) 捕获一个或多个非右括号字符,确保不跨括号匹配;
    • g 标志实现全局替换,处理所有匹配项。
  • $1 表示第一个捕获组内容(即括号内文本),避免直接拼接用户输入导致 XSS。
  • 务必先转义再替换:若原始字符串来自用户输入或外部 API,跳过 escapeHtml() 将导致

⚠️ 注意事项:

立即学习前端免费学习笔记(深入)”;

  • 该方案适用于纯文本到 HTML 片段的转换,不可直接插入 innerHTML 而不校验;更安全的做法是结合 textContent + span + css 类(如 ),或使用 domPurify.sanitize() 进一步净化。
  • 若需支持嵌套括号(如 [A [B] C]),标准正则无法胜任,应改用状态机或专用解析器。

总结:一次正则替换即可完成基础加粗需求,但安全永远优先——动态内容必须转义,再格式化,最后谨慎注入 DOM。

text=ZqhQzanResources