ziguzagu.org

JavaScript の String.replace に無名関数

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 オブジェクトが渡せる関数とかあるんじゃろか…。

最速参考

JavaScript