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

如何修复去除HTML标签后出现多空格的正则表达式?

嘿,这问题我熟!你的正则之所以会产生多个空格,是因为每匹配到一个HTML标签或者 就替换成一个空格——要是这些元素连续出现(比如两个标签挨在一起,或者标签跟 相邻),自然就会生成一堆空格堆在一块儿了。

给你两种简单的修复方案:

方案一:分两步处理(最直观好维护)

先把所有标签和 换成空格,再把连续的多个空格合并成单个:

const originalText = "<p>Hello&nbsp;&nbsp;<b>World</b></p>";
const cleanedText = originalText
  // 替换所有HTML标签和&nbsp;为单个空格
  .replace(/(&nbsp;|<[^>]+>)/gi, ' ')
  // 把一个或多个连续空格替换成单个空格
  .replace(/\s+/g, ' ');
// 结果:"Hello World"

如果还想去掉文本首尾的空格,再加个.trim()就行:

const cleanedText = originalText
  .replace(/(&nbsp;|<[^>]+>)/gi, ' ')
  .replace(/\s+/g, ' ')
  .trim();

方案二:一步正则(稍复杂但少一次调用)

用正则匹配连续的标签/&nbsp;组合,直接替换成单个空格,不过可读性不如两步法:

const cleanedText = originalText.replace(/(&nbsp;|<[^>]+>)+/gi, ' ').trim();

另外提个小细节:你原正则里的&amp;nbsp;是转义后的&nbsp;,如果你的源文本里是原始的&nbsp;,直接写&nbsp;就够了;如果确实存在转义后的&amp;nbsp;,那可以把正则改成(/(&amp;nbsp;|&nbsp;|<[^>]+>)/gi, ' ')来覆盖两种情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:51:52