如何清理HTML字符串中除<font>和<br>外的所有元素?
保留和
标签,转义其他HTML标签的解决方案
标签,转义其他HTML标签的解决方案
核心思路
- 匹配所有HTML标签并提取标签名称
- 仅保留
<font>、</font>、<br>、<br/>这四类标签 - 将其余标签的尖括号替换为HTML实体(
<→<,>→>),使其无法被浏览器解析为HTML元素
实现代码示例(JavaScript)
function cleanHtmlTags(str) { // 正则匹配所有HTML标签,捕获闭合符、标签名、属性内容 return str.replace(/<(\/?)([a-z]+)([^>]*)>/gi, (fullMatch, slash, tag, attrs) => { const allowedTags = ['font', 'br']; // 统一转小写判断,兼容大小写形式的标签 if (allowedTags.includes(tag.toLowerCase())) { return fullMatch; } // 替换尖括号为实体,将标签转为纯文本 return fullMatch.replace(/</g, '<').replace(/>/g, '>'); }); } // 测试用例 const originalContent = '<h2>测试标题</h2><font color="red">红色字体</font><p>段落内容<br/>换行测试</p>'; const cleanedContent = cleanHtmlTags(originalContent); console.log(cleanedContent);
关键说明
- 正则的
gi标志实现全局匹配且忽略标签大小写,适配<BR>、<FONT>这类大写格式的标签 - 保留带属性的
<font>标签(如<font size="2">),不修改其属性内容 - 支持自闭合的
<br/>标签,同样会被完整保留
测试结果
原内容:
测试标题
红色字体段落内容
换行测试
处理后内容:
<h2>测试标题</h2>红色字体<p>段落内容
换行测试</p>
内容的提问来源于stack exchange,提问作者ghosty
相关产品推荐
相关产品推荐

