一、正则
var test1 = '123565456.89';
var format = test1.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
console.log(format);//"123,565,456.89"
1.\B匹配边界
2.?=(\d{3})+表示必须是1个或多个的3个连续数字
3.(?!\d)表示除数字外的任意字符,即匹配到数字以外的任意字符,终止匹配
二、函数
function formatCash (num) {
num = parseFloat(num);
if (isNaN(num)) return new Error('the import must be a number');
var arr = num.toString().split('.');
if (arr[0].length <= 3) return num;
var num = arr[0].split('');
for (var i = 1, len = num.length; i < len; i++) {
if ((len - i) % 3 === 0) {
num[i] = ',' + num[i];
}
}
if (arr[1] === undefined) {
return num.join('')
} else {
return num.join('') + '.' + arr[1]
}
}
三、toLocalString
结果保留3位小数
(2336433.45).toLocaleString('en-US');//"2,336,433.45"
(2336433.45621212).toLocaleString('en-US');//"2,336,433.456"