【发布时间】:2021-12-22 09:15:06
【问题描述】:
我想使用正则表达式删除 html 标签的属性。它可以是任何 html 元素并允许嵌套元素,例如:
<div fadeout"="" style="margin:0px;" class="xyz">
<img src="abc.jpg" alt="" />
<p style="margin-bottom:10px;">
The event is celebrating its 50th anniversary Kö
<a style="margin:0px;" href="http://www.germany.travel/">exhibition grounds in Cologne</a>.
</p>
<p style="padding:0px;"></p>
<p style="color:black;">
<strong>A festival for art lovers</strong>
</p>
</div>
或者是这样的
<span style="margin: 0;"><p class="abc"> Test text</p></span>
因为安全原因,需要移除属性
我尝试删除的内容
s/(<\w+)\s+[^>]*/$1/
<*\b[^<]*>(?:[^<]+(?:<(?!\/?div\b)[^<]*)*|(?R))*<\/*>\s*
<([a-z][a-z0-9]*)[^>]*?(\/?)>
但不工作
【问题讨论】:
-
你为什么要尝试使用正则表达式呢?属性不能用引号引起来,它们可以用单引号引起来。见stackoverflow.com/a/69902509/227299 任何试图在未来处理这个正则表达式的人都会讨厌你! ??????
-
没有强制您删除所有属性的安全要求,您做错了事。您很可能会破坏预期的功能,或者仍然存在 XSS 漏洞。请参阅npmjs.com/package/sanitize-html 可以指导您。
标签: javascript html angular regex