JavaScript - replace()

"hoge".replace() での正規表現とコールバック関数

replace関数の第一引数には正規表現を指定できる。
また第二引数にはマッチした文字列を引数とするコールバック関数を指定できる。コールバック関数の戻り値でマッチした文字列が置換される。

var str = "hoge123foo456-";
str = str.replace(/([a-z]+)([0-9]+)/g,function (total, alpha, num) {
    console.log(total);
    console.log(alpha);
    console.log(num);
});

コールバック関数の第一引数はマッチング文字列全体、第二引数以降はグループ化した文字列のマッチングが渡される。
g オプションをつけた場合コールバック関数が呼ばれる回数=マッチング数となる。
グルーピングした文字列はコールバック関数での引数としてしか意味を持たない。置換対象ではないので注意。