\]\*> 是删除单行 HTML 标签最稳的正则,匹配以 结尾的标签,不跨行、不误删属性或字符串中的

用 ]*> 删除单行 HTML 标签最稳
几乎所有编辑器(Notepad++、VS Code、Sublime)里删标签,]*> 是第一选择。它匹配「以 、以 > 结尾」的片段,天然避开属性值里的 或字符串中的 <code><div>,也不会跨行误吞内容。
<p>常见翻车点:<code><.></.> 看似简单,但遇到 <script>\nconsole.log('<p>hello');</script> 就会从第一个 ,整块代码被删掉。
操作时必须确认三点:
- 勾选「正则表达式」模式(Notepad++ 是 Ctrl+H → 勾选 Regex;VS Code 是 Alt+R)
- 不勾选「匹配新行」或
s标志(否则[^>]*失效) - 替换框留空,别输空格或
删整段 HTML 区间要手动隔离 <script></script> 和 <style></style>
]*> 本身不识别上下文,对 <script>alert('<div>')</script> 这类内容照删不误。没有通用正则能自动跳过 script/style 块——编辑器没 HTML 解析器。
立即学习“前端免费学习笔记(深入)”;
安全做法是显式干预:
- 在 Sublime 中:Ctrl+Shift+P → 输入
Fold Tags,折叠所有<script></script>和<style></style>块,再执行替换(折叠后的内容不参与正则扫描) - 在 Notepad++ 或 VS Code 中:先用
<script>]*>[\s\S]*?</script>和<style>]*>[\s\S]*?</style>分别选中并复制到临时文件备份,再全选删除,最后再删普通标签 - 别信
(?!<script>]*></script>这类“负向断言保命写法”——PCRE 引擎在 Notepad++ 里对复杂先行断言支持极差,容易漏或卡死
想保留某些标签?用占位符法比负向排除靠谱
网上常有人试 ]*> 来“留 img 删别的”,这在多数编辑器里会失效。Notepad++ 的 PCRE 版本不稳,VS Code 的 JS 正则引擎也不支持带量词的负向先行断言。
真正能落地的方案是三步占位:
- 先把
<img alt="HTML批量删除指定区间内容的正则技巧" >]*>替换为唯一标记,如【IMG_001】(注意加编号避免重复) - 再用
]*>删光其余所有标签 - 最后把
【IMG_001】换回原<img ... alt="HTML批量删除指定区间内容的正则技巧" >(可提前用查找功能复制原始标签备用)
这个流程在批量处理 Markdown 转纯文本、邮件模板清洗等场景中反复验证有效。
删完标签后必做两件事:压空格 + 清空行
]*> 只管删标签,不管残留空白。比如 <p> <br>文字</p> 删完可能变成 文字,甚至 \n\n文字\n\n。
补救动作要跟上:
- 查
\s+(注意:Notepad++ 默认 \s 不含 \n,安全),替换成单个空格,解决标签间粘连 - 查
^\s*$\r?\n(匹配空行,兼容 Windows/Linux/macOS),替换成空,清理段落间隙 - 如果原文有语义换行(如
<p>段一</p>\n<p>段二</p>),建议先用\s*<p></p>→\n\n做段落分隔,再统一清空行
这些步骤看着琐碎,但跳过就容易导出一堆挤在一起、没法读的“脏文本”。批量处理前,务必拿小样试一遍全流程。



















