今日一小记
利用正则表达式的零宽断言来处理:
正向零宽断言: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