数字按千分位分隔

今日一小记

利用正则表达式的零宽断言来处理:

正向零宽断言:x(?=y),当x后面的内容等于y,x 匹配成功;

function sep(inputNum){
	//数字后面加上空格,作为数字的结尾标识,这个标识只要不是数字都行,记得后面替换掉就行
	let num = this.inputNum+ ' ';
	//第一个replace:将匹配的内容后面加一个 ,
	//第二个replace : 这个主要是去除开头加的那个空格
	return num.replace(/(\d)(?=(\d{3})+\s)/g, '$1,').replace(' ', '');
}

说明:
(\d)(?=(\d{3})+\s)拆解为:
x=(\d): 数字
y=(\d{3})+\s)  数字以空格结尾并且数字的个位为3的倍数;
以上综合描述为:如果一个数字x后面伴随的内容为(数字以空格结尾并且数字的个位为3的倍数),则这个数字x 成功匹配;
eg:
对于数字1234544, 会匹配到 1234,和 1,经过第一个replace,变成 1,234,544
对于数字12.23, 会匹配到 1234,和 1,经过第一个replace,变成 1,234,544


上一篇:replace into和insert into on duplicate key update的区别


下一篇:SAP 越南小写金额转大写金额 amount in word