JavaScriptで数値をカンマ区切りする方法としては、 こちらの正規表現を使った方法がメジャーなようですが、以下のように

var re = /(\d)(?=(\d\d\d)+(?!\d))/g;
String(1234).replace(re, '$1,');      // 1,234 OK
String(1234.56).replace(re, '$1,');   // 1,234.56 OK
String(1234.5678).replace(re, '$1,'); // 1,234.5,678 NG

小数点以下が3桁を超えると破綻してしまいます。 どのような解決策があるでしょうか。