js实现千位符
使用 toLocaleString 方法
toLocaleString 是 JavaScript 内置的方法,可以直接将数字格式化为带有千位分隔符的字符串。
const number = 1234567.89;
const formattedNumber = number.toLocaleString();
console.log(formattedNumber); // 输出: "1,234,567.89"(根据地区可能不同)
如果需要指定地区(如强制使用英文格式):
const formattedNumber = number.toLocaleString('en-US');
使用正则表达式替换
通过正则表达式在数字字符串中插入千位分隔符。

function formatNumber(num) {
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
console.log(formatNumber(1234567)); // 输出: "1,234,567"
处理小数部分
如果需要支持小数,可以稍作调整:
function formatNumberWithDecimal(num) {
const parts = num.toString().split('.');
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return parts.join('.');
}
console.log(formatNumberWithDecimal(1234567.89)); // 输出: "1,234,567.89"
使用 Intl.NumberFormat
Intl.NumberFormat 提供了更灵活的格式化选项,支持多语言和自定义格式。

const formatter = new Intl.NumberFormat('en-US');
console.log(formatter.format(1234567.89)); // 输出: "1,234,567.89"
自定义选项
可以指定小数位数、货币符号等:
const formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
console.log(formatter.format(1234567.89)); // 输出: "$1,234,567.89"
手动实现(循环插入分隔符)
通过循环从右到左每三位插入逗号:
function manualFormat(num) {
const str = num.toString();
let result = '';
let count = 0;
for (let i = str.length - 1; i >= 0; i--) {
result = str[i] + result;
count++;
if (count % 3 === 0 && i !== 0 && str[i - 1] !== '-') {
result = ',' + result;
}
}
return result;
}
console.log(manualFormat(1234567)); // 输出: "1,234,567"
注意事项
- 负数和小数需要特殊处理,正则表达式和手动方法需额外逻辑。
toLocaleString和Intl.NumberFormat的结果可能因浏览器或地区设置不同。- 性能敏感场景建议测试正则表达式与内置方法的效率差异。






