String#replace
JavaScriptのString#replaceについてメモ。
String#replaceは第2引数に関数が使える。
例:単語をその文字数に置き換える。
"Time is money".replace(/\w+/g,function(str){ return str.length.toString(); });
結果
4 2 5
正規表現中の()の数をnとすると、第2引数の関数にはn+3個の引数が渡される。
- 第1引数
- マッチした文字列。RegExp.lastMatch
- 第2〜n+1引数
- 正規表現中の1〜n番目の括弧。RegExp.$1など
- 第n+2引数
- マッチした文字列先頭のオフセット。RegExp.index
- 第n+3引数
- 元の文字列。RegExp.input
なんとややこしいこと…。第1引数以外は後に書いたRegExp.なんちゃらをつかうほうがいいかもしれない。
#replaceが正規表現のgフラグによって処理を変えるのはアレだなあ。