由于对正则表达式的弱点,我一直在与他们合作改进.我一直试图做的一个概念是删除除允许列表之外的所有HTML元素.
我设法做了相反的事情 - 删除指定的元素列表:
<\/?(strong|em|a)[^>]*>
Run Code Online (Sandbox Code Playgroud)
但是我想要相反,并删除每个元素.
不要使用正则表达式来解析[X] HTML.
特别是绝对不要使用正则表达式来解析[X] HTML作为安全措施.
HTML解析器(或整数后跟XML解析器)是唯一可行的白名单方法.
/<(.|\n)*?>/g匹配所有HTML标记对,包括标记中的属性
没有.
<a href=">" onmouseover="attackCode()">
Run Code Online (Sandbox Code Playgroud)
还有其他一千种可能性,无论是有效的还是畸形的,但浏览器仍然可以理解它.