不能直接搜.*?,因正则无HTML解析能力,遇换行或嵌套标签会截断或误吞;需分两步:先删闭合对(启用.*匹配换行),再删孤立标签(禁用.*防跨行误删)。

为什么不能直接搜 .*??
这种写法在含换行或嵌套的场景下极易失效。比如 文字 会被截断,或误吞
换行内容 外层标签。正则没有 HTML 解析能力,只认字符边界。
安全删 标签的两步正则法(Sublime / VSCode / Notepad++ 通用)
必须分两步:先删闭合标签对,再删孤立的 或 —— 因为有些 HTML 是不规范的,比如只写了开标签没闭合。
- 第一步(删完整标签对):
查找:]*>([\s\S]*?)
替换:$1
✅ 勾选.*模式(即“匹配新行”),保留中间所有内容(包括换行、标签、空格) - 第二步(删残留单标签):
查找:?small\b[^>]*>
替换:留空
✅ 这里不启用“匹配新行”,避免跨行误删;[^>]*能吃掉可能存在的属性如
删完发现文字变大了?检查是否误删了语义包裹
在现代 HTML 中不只是“字号小”,它有明确语义:侧栏注释、版权信息、法律条款等。如果删掉后视觉异常,大概率是 CSS 里写了 small { font-size: 0.8em; } 并被其他元素继承了。别急着回滚,先全局搜索 small 看是否有样式或 JS 依赖。
更隐蔽的问题是:某些 CMS 或编辑器会把 当作格式开关硬编码进富文本输出,删标签不删内联样式(比如 ),结果文字反而更乱。遇到这种情况,得连带清理 style="[^"]*font-size[^"]*" 这类内联样式。
想保留 但删里面冗余属性?用这个正则
如果只是想清空 的 class、id、style 等,保留标签本身,就别动两步法,改用:
查找:]*)>
替换:
✅ 注意:这会干掉所有属性,包括合法的 lang 或 data-,所以替换前建议先确认项目中是否用到了这些。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











