You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript正则实现星号文本加粗无法匹配含空格内容问题

问题原因

原有实现存在两处缺陷,导致无法满足通用加粗替换需求:

  • 正则匹配范围过窄:/\*(\w+)\*/g中的\w+仅支持匹配由字母、数字、下划线组成的连续无空格内容,无法识别带空格、标点、中文的被包裹文本。
  • 替换逻辑存在bug:通过split(reg)[1]取固定索引值的写法,当文本存在多组*包裹的加粗片段时,所有匹配项都会被替换为第一组的内容,无法正确对应每段加粗文本。
修正后代码
function bold(text){
    const reg = /\*([^*]+)\*/g
    return text.replaceAll(reg, "<strong>$1</strong>")
}
实现说明
  • 调整后的正则使用[^*]+匹配两个星号之间的内容:匹配1个及以上所有非*的字符,天然支持空格、标点、多语言文本,同时不会出现跨多个星号标记的错误匹配。
  • 替换时直接使用正则替换的捕获组引用$1,自动对应每一处匹配到的加粗内容,天然支持单文本内多段加粗内容的同时替换。
测试验证

传入测试文本:
normal text *words to be bolded* continue normal text *第二处加粗内容* 结束
执行后输出:
normal text <strong>words to be bolded</strong> continue normal text <strong>第二处加粗内容</strong> 结束
完全符合预期效果。

内容的提问来源于stack exchange,提问作者Waseem Saeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:03:51