0

指定された文字列からBBCodeを削除しようとしています(gsub正規表現で使用するだけです)。

文字列の例を次に示します。

The [b]quick[/b] brown [url=http://example.com]fox[/url] jumps over the lazy dog [img=http://example.com/lazy_dog.png]

そして、出力するために必要なのは次のとおりです。

The quick brown fox jumps over the lazy dog

それで、それを行う方法は何ですか?これを行うさまざまな例を見つけましたが、私のユースケースではうまくいきませんでした。

私が試したもの:/\[(\w+)[^w]*?](.*?)\[\/\1]/

[img]しかし、それは終了タグをキャッチしません。

4

1 に答える 1

4

この投稿の目的は、BBCodeの解釈方法の違いを示すことです。これは、コンテンツを保持しながらBBCodeタグを削除するときに考慮する必要があります。

これにより、このページで定義されているBBコードタグのみが削除されます。

ただし、有効なBBコードタグと見なされるものよりも多くを削除する可能性があります。たとえば、このBBCodeテスター[b ]Bold[/b]では太字になっていないため、これらのタグはそのままにしておく必要があります。ただし、以下の正規表現によって削除されます。また、次のような明らかに非BBCodeも削除されます[\b][\b=something]

別の例は[url=http://example.com/ ][/url](スペースに注意してください)です。これは、BBCodeパーサーに応じて、OKまたはOKでない場合があります。以下の正規表現は開始タグを無視しますが、終了タグを削除します。

/\[\/?(?:b|u|i|s|size|color|center|quote|url|img|ul|ol|list|li|\*|code|table|tr|th|td|youtube|gvideo)(?:=[^\]\s]+)?\]/

このデモ[code]で見られるように、タグも正規表現によって正しく処理されません。交換はタグの間にそのままにしておく必要があります。[code]code

このBBCodeテスター[b][b][b]Text[/b][/b][/b]では、解析して太字にすることができますが、もう1つは、一部が太字で残りが太字ではないTextものとして解釈します。ネストされたタグを許可する場合、正規表現は適切な選択ではありません。[b][b]Text[/b][/b][b][b]Text

于 2013-02-04T21:07:18.510 に答える