2016-11-29 2 views
0

Я пытаюсь использовать регулярное выражение для фильтрации запрещенных тегов HTML из заданной строки. Да, я знаю, я должен использовать парсер вместо этого, но для этой конкретной проблемы это происходит быстрее.Regex: группа захвата отмены с логическим или

Идея состоит в том, чтобы присваивать белый список каждому тегу, который в порядке (например, <span>, <b>, </br>), и соответствовать запрещенным. До сих пор я придумал следующее выражение: <\/?(?!(span|b|br)).\>

Это хорошо работает для одиночных тэгов, таких как <a>, но такие вещи, как <label>, не работают. Я очень благодарен за помощь, спасибо заранее.

+0

Он должен работать с любым тегом. Используйте '<\ /? (?! (Label | span | br?) \ B) [^>] *>' –

+0

Возможно, вам стоит попробовать '<\ /? (?! (Span | br?) \ B) [^>] *> '? –

ответ

1

Это регулярное выражение будет получить теги, игнорируя при этом срок, ш, б открывающим и закрывающим тегами.

Он должен даже игнорировать те из белого списка, если они содержат атрибуты.

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

Это работает, и синтаксис очень удобен в моей ситуации. Спасибо! – fabs

Смежные вопросы