ホーム > JavaScript > JavaScriptのreplaceで置換後の文字列に関数を使う

JavaScriptのreplaceで置換後の文字列に関数を使う

2009 年 4 月 23 日 コメントをどうぞ コメント
このエントリーをはてなブックマークに追加
Bookmark this on Yahoo Bookmark

JavaScriptでreplaceを使うとき、置換後の文字列に関数を指定できますが、そのときの動きについて調べてみました。

例1

moto =123×456;
saki = moto.replace(/(\d*)(\D*)(\d*)/, function ($0, $1, $2, $3) {
    return ((0)+ $0 +(1)+ $1 +(2)+ $2 +(3)+ $3)
});
document.write(saki);

【結果】 (0) 123×456(1) 123(2) x(3) 456

例2

saki = moto.replace(/(\d*)(\D*)(\d*)/, function ($1, $2, $3, $4) {
    return ((1)+ $1 +(2)+ $2 +(3)+ $3 +(4)+ $4)
});

【結果】 (1) 123×456(2) 123(3) x(4) 456

例3

saki = moto.replace(/(\d*)(\D*)(\d*)/, function ($4, $3, $2, $1) {
    return ((1)+ $1 +(2)+ $2 +(3)+ $3 +(4)+ $4)
});

【結果】 (1) 456(2) x(3) 123(4) 123×456

$0、$1などを使って置換後の文字列を表現しますが、$0や$1に何がセットされるかは
functionの引数の場所によってきまるだけで、$nが何かは関係ないようです。

replace(/(☆)(★)(◆)/, function (全体,,,) {
    return (戻り値)
})

「全体」は使わないことがあるのですが、必然的に取得されてしまうようです。となると、例1のような書き方が分かりやすいかもしれません。この場合、PHPのpreg_replaceに似た動きをします。

カテゴリー: JavaScript タグ: ,
  1. コメントはまだありません。
  1. トラックバックはまだありません。