本文介绍如何通过 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✅ 关键说明:
⚠️ 注意事项:
总结:一次正则替换即可完成基础加粗需求,但安全永远优先——动态内容必须转义,再格式化,最后谨慎注入 DOM。