删HTML注释必须用并勾选「. 匹配换行符」,否则无法跨行匹配;该正则仅识别标准注释,不处理CDATA、DOCTYPE或XML处理指令,且需预览防误删伪注释。

删 HTML 注释 必须用 [\s\S] 匹配换行
Notepad++ 默认正则不跨行,<!--.*--> 只能删单行注释,遇到换行就失效。必须启用「. 匹配换行符」并用 [\s\S] 替代 .,否则注释块中间的换行会让匹配中断。
操作步骤:
- 打开
Ctrl + H,勾选「正则表达式」和「. 匹配换行符」 - 查找目标填:
<!--[\s\S]*?--> - 替换为:留空
- 先点「查找全部」预览,确认没框住
<script></script>或<style></style>里的伪注释(比如<!-- <div> -->)
别指望一条正则干掉所有注释类型
<!-- --> 是唯一被 Notepad++ 正则可靠识别的 HTML 注释; 里的注释、CDATA 段落(<code>)、XML 处理指令(<?xml-stylesheet ?>)全都不吃这套规则。
常见误判场景:
立即学习“前端免费学习笔记(深入)”;
-
<!-- <script>console.log("<div>"); </script> -->:会被整块删掉,但里面是合法 JS 字符串,不是注释 -
]]>:不会被<!--[\s\S]*?-->匹配,因为开头不是<!-- <!DOCTYPE html [ <!-- ignored --> ]>:DTD 内部注释不属于 XML 注释节点,插件和正则都无感
XML Tools 插件删注释有硬限制
很多人装了 XML Tools 插件点 Remove Comments 没反应,大概率是踩了这三个坑:
- Notepad++ 是 32 位,但插件只提供 64 位 DLL(
XMLTools.dll),菜单项直接灰掉 - 文件编码不是 UTF-8 或 UTF-8 with BOM,插件无法正确解析注释边界
- 当前文档标签页非活动状态——插件只处理当前激活窗口,多标签页批量删根本无效
即使成功触发,它也只删标准 <!-- -->,对 CDATA、DOCTYPE、PI 指令一概不管,且不支持撤销。
删完注释后空行和缩进得手动收尾
注释删掉后常留下大量仅含空格、tab 或纯换行的“假空行”,^\s*$\R? 能清掉它们,但要注意:
-
\s不匹配 UTF-8 BOM(\xEF\xBB\xBF),如果文件开头有 BOM,得单独搜\xEF\xBB\xBF并删掉 - 连续多个空行用
\R{2,}→\R合并,但别用^$,它不认带空格的行,会漏删 - HTML 标签删完后,行内多余空格(如
<p> hello </p>)得额外跑\s+→压缩,否则视觉上还是毛刺感
真正难的不是写对正则,而是判断哪段



















