• ベストアンサー

カンマのメソッドの意味

function filedComma(v){ var re = /(-?\d+)(\d{3})/; v=v.toString(); while(re.test(v)){ v = v.replace(re, "$1,$2"); } return v; } カンマをつける関数ですが、 一行ずつその意味を教えていただけないでしょうか? お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kurus
  • ベストアンサー率52% (12/23)
回答No.1

正規表現を使用しています。 var re = /(-?\d+)(\d{3})/; で、合致する文字列のパターンを作成しています。 まず最初のカッコ内に関しては ・-? マイナスが着くかつかないか ・\d+ 数字が1つ以上連続する というパターンです。 そして次のカッコ内に関しては、 ・\d{3} 数字が3文字連続する ということ。 なので、この var reのパターンには、次のうちどれが当てはまるかわかりますか? (1)-1234 (2)-12 (3)124 (4)1234 (1)と(4)ですよね。 次にwhile(re.test(v)) では何をやっているかと言うと、 functionの引数のvに、reに設定したパターンが含まれているかチェックします。 含まれる場合はwhile文の中の、v.replace(re,"$1,$2")を行います。 replaceメソッドは、vの値をreの正規表現を使用し、 置換することをやっています。 replace内の$1とは、(-?\d+)のこと。$2は(\d{3})のこと。 なので、1234の場合は、1と234に分割され、それをカンマで連結するということをしているので、1,234となります。 -1234の場合は、-1と234に分割されるので-1,234となります。 ちなみに123456789の場合はループ処理内で、 1回目 123456,789 2回目 123,456,789 という形になります。 検索でJavascript 正規表現で色々出てきますので、 そちらも参考にして下さい。

takahiro_k
質問者

お礼

自分でも調べてみたのですが、 ここまで分かり易く説明してくれているサイトがなかったんです。 すごく分かり易く勉強になりました。 ありがとうございました。

関連するQ&A