JS实现千位分隔符

只适用整数

		function format (num) {
		    var reg=/\d{1,3}(?=(\d{3})+$)/g; 
		    return (num + '').replace(reg, '$&,');
		}
		function format(num){
			 num=num+'';//数字转字符串
			  var str="";//字符串累加
			  for(var i=num.length- 1,j=1;i>=0;i--,j++){
			      if(j%3==0 && i!=0){//每隔三位加逗号,过滤正好在第一个数字的情况
			          str+=num[i]+",";//加千分位逗号
			          continue;
			      }
			      str+=num[i];//倒着累加数字
			  }
			  return str.split('').reverse().join("");//字符串=>数组=>反转=>字符串
			}

解释

整数部分加小数部分不动

	let miliFormat = (() => {  
		let DIGIT_PATTERN = /(^|\s)\d+(?=\.?\d*($|\s))/g
		let MILI_PATTERN = /(?=(?!\b)(\d{3})+\.?\b)/g
		return (num) => num && num.toString()
			.replace(DIGIT_PATTERN, (m) => m.replace(MILI_PATTERN, ','))
	})()

解释

保留两位小数(四舍五入-舍)

function milliFormat(num){//添加千位符
	s=num.toString()
	if(/[^0-9\.]/.test(s)) return "invalid value";
	s=s.replace(/^(\d*)$/,"$1.");
	s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1");
	s=s.replace(".",",");
	var re=/(\d)(\d{3},)/;
	while(re.test(s)){
		s=s.replace(re,"$1,$2");
	}
	s=s.replace(/,(\d\d)$/,".$1");
	return s.replace(/^\./,"0.")
}

一套完整的金额转换加千位分隔符

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn">
    <head>
      <title>js千位符 | js 千位分隔符 | js 金额格式化</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<script type="text/javascript">
		
			// 将金额类型转为数字类型
			function toNum(str) {
				return str.replace(/\,|\¥/g, "");
			}
 
			// 保留两位小数(四舍五入)
			function toPrice(num) {
				num = parseFloat(toNum(num)).toFixed(2).toString().split(".");
				num[0] = num[0].replace(new RegExp('(\\d)(?=(\\d{3})+$)','ig'),"$1,");
				return "¥" + num.join(".");
			}
			
			// 保留两位小数(不四舍五入)
			function toPrice1(num) {
				num = parseFloat(toNum(num).replace(/(\.\d{2})\d+$/,"$1")).toFixed(2).toString().split(".");
				num[0] = num[0].replace(new RegExp('(\\d)(?=(\\d{3})+$)','ig'),"$1,");
				return "¥" + num.join(".");;
			}
			
			// 不处理小数部分
			function toPrice2(num) {
				var source = toNum(num).split(".");
				source[0] = source[0].replace(new RegExp('(\\d)(?=(\\d{3})+$)','ig'),"$1,");
				return "¥" + source.join(".");
			}
		</script>
    </head>
    <body>
		<h1>js千位符 | js 千位分隔符 | js 金额格式化</h1>
		<div>
			保留两位小数(四舍五入):  <input onchange="this.value=toPrice(this.value)"><br><br>
			保留两位小数(不四舍五入): <input onchange="this.value=toPrice1(this.value)"><br><br><br>
			不处理小数部分: <input onchange="this.value=toPrice2(this.value)">
		</div>
    </body>
</html>

效果:

JS实现千位分隔符

也可参考https://www.jb51.net/article/61585.htm