在正则表达式上表现不佳,我一直在与他们合作改进。我一直试图做的一个概念是删除除允许列表之外的所有HTML元素。
我设法反过来 - 删除指定的元素列表:
<\/?(strong|em|a)[^>]*>
但是我想要反其道而行,除去每个元素。
答案 0 :(得分:5)
不要使用正则表达式来解析[X] HTML。
尤其绝对不要使用正则表达式来解析[X] HTML作为安全措施。
HTML解析器(或整数后跟XML解析器)是唯一可行的白名单方法。
/&lt;(。| \ n)*?&gt; / g匹配所有HTML标记对,包括标记中的属性
没有
<a href=">" onmouseover="attackCode()">
以及其他一千种可能性,无论是有效还是格式错误,但浏览器仍然可以理解它。
答案 1 :(得分:4)
答案 2 :(得分:0)
假设PCRE,使用(?!元素)而不是(元素)。
答案 3 :(得分:0)
/<(.|\n)*?>/g
matches all HTML tags pairs including attributes in the tags
排除标签strong和em
(?!strong|em)
匹配所有HTML标记对但强和em
<((?!strong|em).|\n)*?>