正则表达式:使用逻辑或否定捕获组

时间:2016-11-29 15:57:39

标签: html regex parsing regular-language

我正在尝试使用正则表达式来过滤给定字符串中的禁止HTML标记。是的我知道,我应该使用解析器,但对于这个特定的问题,这种方式更快。<​​/ p>

这个想法是将每个标签列入白名单(例如<span>, <b>, </br>)并匹配禁用的标签。到目前为止,我想出了以下表达式:<\/?(?!(span|b|br)).\>

适用于<a>之类的单个字符标记,但<label>之类的内容不起作用。我非常感谢你的帮助,提前谢谢。

2 个答案:

答案 0 :(得分:1)

/<(?!(\/?span|\/?b|\/?br)).*?>/g

enter image description here

答案 1 :(得分:1)

此正则表达式将获取标记,同时忽略span,br,b开始和结束标记。

如果它们包含属性,它甚至应该忽略白名单中的那些

<\/?(?!(?:span|br|b)(?: [^>]*)?>)[^>\/]*>