JavaScriptの正規表現におけるreplaceメソッドのキャプチャグループ
メソッド replace を使用する際、
正規表現で何かをキャプチャグループに入れると、
置換文字列の中でドル記号 $ と
キャプチャグループ番号を書くことで、
そのキャプチャグループの内容を挿入できます。
例えば、$1 - 最初のキャプチャグループ、
$2 - 2番目のキャプチャグループといった具合です。
これがなぜ必要か、そしてどのように使用するかを、 例を見ながら学んでいきましょう。
例
すべての数字を見つけ、それらを同じ数字で 括弧で囲んだものに置き換えてみましょう。 そのためには、見つかったすべての数字を、 括弧で囲まれた自分自身に置き換えます:
let str = '1 23 456 xax';
let res = str.replace(/(\d+)/g, '($1)');
結果、変数には以下の文字列が格納されます:
'(1) (23) (456) xax'
例
x で囲まれた数字を表すすべての文字列を見つけ、
それらの数字を同じ数字で '!' 記号で
囲まれたものに置き換えてみましょう:
let str = 'x1x x23x x456x xax';
let res = str.replace(/x(\d+)x/g, '!$1!');
結果、変数には以下の文字列が格納されます:
'!1! !23! !456! xax'
例
次の問題を解いてみましょう: 'aaa@bbb' という形式の文字列
(文字の後ろに @ 記号、その後に文字が続く)があります。
@ の前後の文字を入れ替える必要があります。
let str = 'aaa@bbb ccc@ddd';
let res = str.replace(/([a-z]+)@([a-z]+)/g, '$2@$1');
結果、変数には以下の文字列が格納されます:
'bbb@aaa ddd@ccc'
実践問題
次の文字列があります:
let str = '12 34 56 78';
すべての2桁の数字で、数字の順序を入れ替えてください。
日付の文字列があります:
let str = '31.12.2025';
この日付を '2025.12.31' の形式に変換してください。