
Number.prototype.toLocaleString()  <不支持大数>
缺点: 存在局限性,不支持大数
var n = 12345678;n.toLocaleString();// "12,345,678"(12345678.898).toLocaleString();// "12,345,678.898"
正则
function thousands(num) {var str = num.toString();var reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g;// var reg = new RegExp(/(\d)(?=(\d{3})+(?!\d))/, 'g');return str.replace(reg, '$1,');}console.log(thousands(7654321));console.log(thousands(1234567.1234567));// 7,654,321// 1,234,567.1234567
思路:
- 区分带小数、不带小数
 
不带小数
写法2
var reg = new RegExp(/(\d)(?=(\d{3})+(?!\d))/, 'g');return str.replace(reg, '$1,');

📢   上下区别 
var reg = new RegExp(/\B(?=(\d{3})+(?!\d))/, 'g');return str.replace(reg, ',');

带小数
正则知识补充
先行断言 ?=

正向否定查找 ?!
非捕获括号 ?:
字符串
// 1. 提取整数部分// 2. 整数转数组逐个遍历// 3. 拼接字符串并返回function thousands(num) {var splits = [],ans = [];var splits = num.toString().split('.');splits[0].split('').reverse().map(function (item, i) {if (i % 3 == 0 && i != 0) {ans.push(',');}ans.push(item);});return ans.reverse().join('') + (splits.length > 1 ? '.' + splits[1] : '');}console.log(thousands(7654321));// 7,654,321console.log(thousands(1234567.1234567));// 1,234,567.1234567
🔚 2020-5-8

