2016-11-29 95 views
0

我试图使用正则表达式来过滤给定字符串外的禁止HTML标记。是的,我知道,我应该使用解析器,但对于这个特定的问题,这种方法更快。正则表达式:逻辑取反捕获组或

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

它适用于单个字符标记,如<a>,但像<label>这样的东西不起作用。我真的很感谢一些帮助,在此先感谢。

+0

它应该使用任何标签。使用'<\ /?(?!(label | span | br?)\ b)[^>] *>' –

+0

''多个字符可能你应该尝试'<\ /?(?!(span | br?)\ b)[^>] *> '? –

回答

1

此正则表达式将得到标签而忽略了跨度,BR,B开始和结束标记。

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

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

这工作和语法是非常方便在我的情况。非常感谢! – fabs

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

enter image description here

+0

也适用!谢谢! – fabs