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