Webtech Walker

javascriptのreplaceにfunctionを渡す

この前URLをリンクにして、リンクテキストだけURLデコードするっていう置換をPerlでやったけど、それのJS版。

replaceの第二引数にfunctionを渡せるらしい。知らんかった。

text.replace(/(https?:\/\/[\x21-\x7e]+)/gi, function () {
    var uri = arguments[1];
    return '<a href="' + uri + '">' + decodeURI(uri) + '</a>';
});

functionの引数には以下のようになる。

  • arguments[0] => マッチした文字列全体
  • arguments[1] ~ arguments[arguments.length - 3] => ()でグルーピングした文字列が順番に
  • arguments[arguments.length - 2] => マッチした文字が先頭から何文字目か
  • arguments[arguments.length - 1] => 検索対象の全体の文字列
このエントリーをはてなブックマークに追加