• ベストアンサー

Javascriptでの正規表現(RegExp)

RegExpで「{a|b}」という文字列を「c」に書き換えるための正規表現はどう書けば良いのでしょうか? 雰囲気としては "XXXXXXXXX {a|b} YYYYYYYY".replace(new RegExp(正規表現, 'g'), "c"); → "XXXXXXXXX c YYYYYYYY" というのをやりたいです。 できれば"{a|b}"の部分は間にスペースやタブが入っても良いようにしたいのですが複雑になるなら"{a|b}"だけでも構いません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.2

JavaScript の正規表現は、一般に「正規表現リテラル」で記述するのが一般的です。性能とかエスケープ文字のバッティングとかが面倒なので。 new RegExp("正規表現", "g") → /正規表現/g 大括弧'{}' や 縦棒'|' は正規表現にて意味を持ちますので、エスケープ文字が必要です。 {a|b} → /\{a\|b\}/g 間にスペースやタブが入っても置換するには、空白文字クラスが0個以上と指定するのが良いでしょう /\{a\|b\}/g → /\{\s*a\s*\|\s*b\s*\}/g まとめると "XXXX{a|b}YYYY".replace(/\{\s*a\s*\|\s*b\s*\}/g, 'c');

miruha2011
質問者

お礼

ありがとうございました。 説明が詳しかったのでこちらをベストアンサーにさせて頂きます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

document.write("XXXX\tXXXXX { a |\tb} YYYYYYYY".replace(/{\s*a\s*\|\s*b\s*}/, "c")); みたいなかんじ?

miruha2011
質問者

お礼

ありがとうございました。