JavaScript の String.replace に無名関数・Function オブジェクトを渡せる、というのを今日知りました。もちろん世間じゃアタリマエ~、だった…。
var str = "hoge123foo456-";
var matches = new Array();
str = str.replace(
/([a-z]+)([0-9]+)/g,
function (total, alpha, num) {
matches.push(total);
alpha = alpha.toUpperCase();
num = eval(num) * 3;
return alpha + num;
}
);
alert(matches.join("\n") + "\n" + str);
結果。
hoge123
foo456
HOGE369FOO1368-
第1引数がマッチした文字全体というのが Perl の s///e とは違うところ。へ~。他にも無名関数・Function オブジェクトが渡せる関数とかあるんじゃろか…。