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

如何用正则表达式匹配HTML注释外的空白字符?

正则表达式匹配HTML注释外的空白(\n、\t、四个空格)

需求说明:

  • 需要用正则替换\n、\t和 (四个连续空格),但必须保留HTML注释块(<!--与-->精准包裹)内的所有空白
  • 支持多个注释块共存,注释之间的空白需要被正常匹配替换
  • 仅允许通过正则替换操作实现,不能修改HTML的其他内容

测试示例代码

<div>
    <p>Sample text!</p>
    <!--
        <img src="test.jpg" alt="This is an image!" width="500" height="600">
    -->
</div>
<div>
    <p>Sample text!</p>
    <!--
        <img src="test.jpg" alt="This is an image!" width="500" height="600">
    -->
</div>
<div>
    <p>Sample text!</p>
    <!--
        <img src="test.jpg" alt="This is an image!" width="500" height="600">
    -->
</div>

注:需匹配所有四个空格的组合,但排除每个注释内的空格(示例中第4、5、10、11、16、17行的空格)

当前尝试与问题

已按空白类型拆分测试,针对四个空格的正则:

/(?<!<!--.*?(?<!-->.*?))    (?!(?!.*?<!--).*?-->)/gs

该表达式能匹配首尾注释块外的空格,但会错误匹配中间注释块内的空格。

尝试修改后半部分的正则:

/    (?!(?!.*?<!--).*?-->)/gs

寻求改进建议,同时确认该需求是否可行。


更新说明

  • 最终目标是在高度定制的TinyMCE实例中,通过protect属性防止空白被清除,该属性接收正则表达式列表,匹配到的内容会被替换为专属注释<!--mce:protected %0A-->
  • 发布问题后意识到,其实可以单独保护整个注释块(因为注释不会在编辑器中显示)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:53:22