dポイントプレゼントキャンペーン実施中!

RegExpで「{a|b}」という文字列を「c」に書き換えるための正規表現はどう書けば良いのでしょうか?

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

A 回答 (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');
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/26 13:45

document.write("XXXX\tXXXXX { a |\tb} YYYYYYYY".replace(/{\s*a\s*\|\s*b\s*}/, "c"));



みたいなかんじ?
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/26 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!