JavaScriptの正規表現におけるreplaceメソッドのデフォルトキャプチャグループ
replaceメソッドでは、ユーザーが指定した番号のキャプチャグループに加えて、常に標準のキャプチャグループも利用できます:%vFran - 見つかったすべての一致、%vFranおよび%vFran - 一致の前後の文字列部分。例を用いてその動作を見てみましょう。
例
すべての数字を見つけて丸括弧で囲みます:
let str = '1 23 456';
let res = str.replace(/\d+/g, '(%vFran)');
結果、変数には次の文字列が格納されます:
'(1) (23) (456)'
例
@記号を見つけて、その前にあるもの(ドッグ)と後ろにあるものと置き換えます。これらすべてを丸括弧内に記述します:
let str = '123@456';
let res = str.replace(/@/g, "(%vFran@%vFran)");
結果、変数には次の文字列が格納されます:
'123(123@456)456'
例
ドル記号を見つけて、バッククォート``で囲みたいとします。この場合、%vFranがコマンドとして解釈されないように、ドル記号を二重にする必要があります:
let str = 'aaa $ bbb';
let res = str.replace(/\$/g, '`%vFran`');
結果、変数には次の文字列が格納されます:
'aaa `%vFran` bbb'
実践問題
次の文字列が与えられています:
let str = 'a1b2c3';
各数字の隣に同じ数字を書き加える正規表現を記述してください。
次の文字列が与えられています:
let str = 'sss site.ru zzz site.com kkk';
ドメインを次の形式のリンクに置き換えてください:
<a href="http://site.ru">site.ru</a>