atsukanrockのブログ

Microsoft系技術を中心にぼちぼち更新します

正規表現で数値を3桁カンマ区切の文字列にする

数値を、3桁カンマ区切の文字列にして出力したいということがよくある。そのような場合、Perlであれば、以下のように記述できるそうだ。これは、正規表現の先読みと後読みという機能を使っている。

$value =~ s/(?<=\d)(?=(\d\d\d)+$)/,/g

しかし、JavaScript 1.5では、先読みをサポートしているが後読みはサポートしていないようだ。一次資料は調べていないが、『カネムーメモ: 正規表現、先読みと後読み』とあった。ということで、JavaScriptでは以下のように記述することになる。

String(value).replace(/(\d)(?=(\d\d\d)+$)/g, "$1,");

ちなみに、JavaScript正規表現が先読みをサポートしたのがいつか、MDCで調べてみた。『New in JavaScript 1.5 - MDC』ということなので、1.5からなのだろう。JScriptだとどうなのだろう。『正規表現の概説』によると、8.0だとサポートされているようだが…。