正则表达式:用逻辑或否定捕获组
Regex: Negate capture group with logical or
我正在尝试使用正则表达式从给定字符串中过滤出禁止的 HTML 标签。是的,我知道,我应该改用解析器,但对于这个特定问题,这种方式更快。
我们的想法是将每个可用的标签列入白名单(例如 <span>, <b>, </br>
)并匹配禁止的标签。到目前为止,我想出了以下表达式:<\/?(?!(span|b|br)).\>
它适用于像 <a>
这样的单个字符标记,但像 <label>
这样的东西不起作用。非常感谢您的帮助,提前致谢。
/<(?!(\/?span|\/?b|\/?br)).*?>/g
此正则表达式将在忽略 span、br、b 开始和结束标签的同时获取标签。
如果它们包含属性,它甚至应该忽略白名单中的那些。
<\/?(?!(?:span|br|b)(?: [^>]*)?>)[^>\/]*>
我正在尝试使用正则表达式从给定字符串中过滤出禁止的 HTML 标签。是的,我知道,我应该改用解析器,但对于这个特定问题,这种方式更快。
我们的想法是将每个可用的标签列入白名单(例如 <span>, <b>, </br>
)并匹配禁止的标签。到目前为止,我想出了以下表达式:<\/?(?!(span|b|br)).\>
它适用于像 <a>
这样的单个字符标记,但像 <label>
这样的东西不起作用。非常感谢您的帮助,提前致谢。
/<(?!(\/?span|\/?b|\/?br)).*?>/g
此正则表达式将在忽略 span、br、b 开始和结束标签的同时获取标签。
如果它们包含属性,它甚至应该忽略白名单中的那些。
<\/?(?!(?:span|br|b)(?: [^>]*)?>)[^>\/]*>