如何使用JavaScript正则批量移除HTML标签中的所有style属性
解决方案
你原有正则仅能匹配style="(转义场景下为style=")这部分固定开头,没有覆盖属性值内容和闭合引号,自然无法完整移除整个style属性,按你实际处理的字符串场景选对应代码即可。
适配你问题中的转义文本格式
如果你处理的字符串和问题里贴出的原始文本一致——双引号转义为"、尖括号转义为</>,直接用以下代码:
let b = answer.replace(/style=".*?"/g, '');
常规未转义HTML字符串场景
日常开发中处理普通DOM字符串(标签内用正常单/双引号包裹属性)时,用以下代码:
// 仅匹配双引号包裹的style属性 let b = answer.replace(/style=".*?"/g, ''); // 兼容单、双引号包裹的style属性,适配性更强 let b = answer.replace(/style=(["']).*?\1/g, '');
正则逻辑说明
- 开头的
style="/style=":定位style属性的起始位置 .*?:非贪婪模式匹配任意长度字符,遇到最近的闭合引号就停止匹配,避免跨标签误删内容- 末尾的闭合标识:对应匹配属性值结束的引号,兼容版里的
\1会自动匹配前面捕获到的单/双引号类型,不需要单独写两种规则 - 修饰符
g:开启全局匹配,替换字符串内所有符合规则的style属性,而非仅处理第一个匹配项
用上述代码处理你给出的示例HTML,就能得到预期的输出结果:所有标签的内联style属性被完整移除,标签结构、文本内容都不会被改动。
内容的提问来源于stack exchange,提问作者JJD
相关产品推荐
相关产品推荐

