RegEx:HTML白名单

RegEx:HTML白名单,regex,Regex,由于我对正则表达式的理解能力较弱,我一直在与它们合作以提高性能。我一直在尝试的一个概念是删除所有HTML元素,除了允许的元素列表 我成功地做到了相反的操作--删除指定的元素列表: <\/?(strong|em|a)[^>]*> ]*> 然而,我想要相反的结果,并删除每个元素,但是。假设PCRE,使用(?个元素)而不是(元素)。假设PCRE,使用(?个元素)而不是(元素)。 而是使用一个 相反,使用 匹配除strong和em之外的所有HTML标记对 (?!strong|em)

由于我对正则表达式的理解能力较弱,我一直在与它们合作以提高性能。我一直在尝试的一个概念是删除所有HTML元素,除了允许的元素列表

我成功地做到了相反的操作--删除指定的元素列表:

<\/?(strong|em|a)[^>]*>
]*>
然而,我想要相反的结果,并删除每个元素,但是。

假设PCRE,使用(?个元素)而不是(元素)。

假设PCRE,使用(?个元素)而不是(元素)。

而是使用一个

相反,使用

匹配除strong和em之外的所有HTML标记对

(?!strong|em)
<((?!strong|em).|\n)*?>

匹配除strong和em之外的所有HTML标记对

(?!strong|em)
<((?!strong|em).|\n)*?>

不要使用正则表达式解析[X]HTML

尤其是绝对不要使用正则表达式解析[X]HTML作为安全措施

HTML解析器(或tidier后跟XML解析器)是白名单的唯一可行方法

//g匹配所有HTML标记对,包括标记中的属性

没有



还有上千种可能,包括有效和格式错误,但浏览器仍能理解。

不要使用正则表达式解析[X]HTML

尤其是绝对不要使用正则表达式解析[X]HTML作为安全措施

HTML解析器(或tidier后跟XML解析器)是白名单的唯一可行方法

//g匹配所有HTML标记对,包括标记中的属性

没有



还有上千种可能,包括有效的和格式错误的,但浏览器仍能理解。

这不是实际的生产实施,而是一种学习实验。公平地说,只需将此作为警告发布给其他人。这不是实际的生产实施,但作为一个学习实验。很公平,我只是把这个作为对其他人的警告。中途。它仍然与结束标记匹配。e、 g.test返回test。它仍然与结束标记匹配。e、 g.test返回test“”不完全有效:它不匹配任何以“”开头的标记不完全有效:它不匹配任何以“”开头的标记