2016-11-29 6 views
0

正規表現を使用して、指定された文字列から禁止HTMLタグをフィルタリングしようとしています。はい、私は知っている、私は代わりにパーサーを使用するはずですが、この特定の問題は、この方法が速いです。Regex:論理を持つキャプチャグループを無効にする

アイデアは大丈夫​​なすべてのタグ(たとえば<span>, <b>, </br>)をホワイトリストに登録し、禁止されているものと一致させることです。今まで私は次の式を思いついた。<a>のような単一のcharタグではうまくいくが、<label>のようなものはうまくいかない。事前に感謝しています。

+0

どのタグでも動作するはずです。 '<\ /?(?!(label | span | br?)\ b)[^>] *> ' –

+0

いいえ「」のように「

+0

のような複数の文字ではなく、単一の文字で禁止されたタグのみと一致することです。 '? –

答えて

1

スパン、BR、Bの開始タグと終了タグを無視してこの正規表現は、タグを取得します。

属性が含まれている場合は、ホワイトリストのものも無視する必要があります。

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

これは機能し、私の状況では構文が非常に便利です。本当にありがとう! – fabs

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

enter image description here

+0

同様に動作します!ありがとうございました! – fabs

関連する問題