2012-02-13 7 views
2

[b]または[/ b]のすべてのインスタンスを<b>または</b>に置き換えるjavascriptのreplace()関数を取得する必要があります。私は、グローバルタグでこれを試してみましたが、それは動作しませんと妙に出てくる:出力であることにjavascript replace()複数のhtmlを持つ複数のbbcodeインスタンス

document.write(str.replace(/[b]/g,'<b>').replace(/[/b]/g,'</b>')); 

結果:

[<>]<>la<>la[<>][<>]<>la<>la[<>] 

私も最初の部分を変更してみました:

document.write(str.replace(/[[b]]/g,'<b>').replace(/[[/b]]/g,'</b>')); 
そうのような...どこでも作品のようなものが、奇妙あります]

[blabla[/[blabla[/ 

私は私がここに欠けている明白なものはおそらくあります知っている...しかし、私はそれを見つけることができません...任意の助けを、私、あなたは永遠にXD

答えて

4

[]/を愛するがspecial RegExp charactersです。

  • [a]を意味します。一致するものはa文字です。 [abcd]は、a、b、c、dのいずれかである1文字に一致することを意味します。 [a-z]を意味します:任意の文字にマッチします。
  • /は、正規表現の始まりと終わりをマークするために使用されます。

リテラル文字を使用するには、彼らはエスケープする必要があります。

str.replace(/\[b\]/g,'<b>').replace(/\[\/b\]/g,'</b>') 

正規表現の両方が、後方参照を使用して、マージすることができることに注意してください。

str.replace(/\[(\/?)b\]/g,'<$1b>') 
// Replaces [b] with <b>, [/b] with </b> 
+0

正式に注意特殊文字の情報をお寄せいただきありがとうございます、^ - ^私は右のように、両方の答えを選ぶことがしたいです! – Elizabeth

+0

@ user1054798あなたは最も役に立つ答えを受け入れることができます(=あなたの問題を解決しました、明確な説明が好ましい)。この回答は、質問のポスト**に掲載されているコアの質問**への回答になるはずです。さらに、ボーナスチップのような本当に**役に立つ**アップポストもできます。 –

+0

私はupvoteに必要な評判を得ていませんが、私がそれを手に入れるとすぐにすべての質問をすることを目指しています:D私はちょうど私のニーズに最も適しているかを確認するために、 ! DはダブルポストしたくなかったあなたがのBBコード要素を入れ子にしている場合、いくつかのフォーラムが迷惑... – Elizabeth

-2

あなたは一度に両方の」日を交換するオフはるかに良いかもしれません:

str = "[b]foo[/b] and [b]bar[/b]" 
str.replace(/\[b\](.+?)\[\/b\]/g,'<b>$1</b>') // <b>foo</b> and <b>bar</b> 

することができますまた、

:1つの正規表現(この例ではB、I、UおよびS)、さらに一歩進み、複数の書式コードを処理
str = "[b]foo[/b] and [i]bar[/i]" 
str.replace(/\[([bius])\](.+?)\[\/\1\]/g,'<$1>$2</$1>') 

有効なマークアップのみを処理し、閉じられていない[タグ]は無視するため、このような式((.+?))があなたより優れています。

+0

考える:私は担当者の増加を見たとき@RobW ... –

+0

@BenjaminUdinktenCate:少なくとも、正規表現だけを使用してネストされたマークアップを解析することはできません。少なくとも再帰的な構造を持たないjavascriptフレーバではできません。それでも、私のソリューションは、あなたの例より明らかにはるかに簡単なOPの要件に対して「十分に良い」と考えています。 – georg

+0

ありがとう!私は以前のどこかで(。+?)の部分を見ていましたが、何があったのか分からなかった(私は彼らが変更されたものの一部であると思った。あなたの問題を解決するにはどうすればいいですか?Dさらに悪いことには申し訳ありませんが、Enterキーをどのようにして
と置き換えて、[引用]のようなものをhtmlに置き換えることもできますか? biusは結果的にq、u、o、t、eのいずれかを置き換えます。そしてネストされたXDは本当に心配しません。これははるかに単純です:P – Elizabeth