什么是千分符
通常在数字每隔三位,加一个“,”,即千位分隔符,便于读数。
在购物时候,查看余额的时候都会用到千分符,实现千分符有很多方法,下面来说一种比较简单的做法。
利用零宽断言实现千分符
<script>
//比如说一件商品单价为¥4051.25,小明买了4件
var price = "4051.25";
var count = 4;
//小明需要支付¥4051.25*4
var zprice = (price * count).toFixed(2);
console.log(`小明买了${count}件单价为${price}的包包,需要支付${zprice}`);
</script>
输出结果
我们希望显示价格是以千分符的方式,那我们只需要做一个正则表达式就可以实现千分符了。这个正则怎么写呢?这里我用到的是零宽断言(不知道零宽断言的看我的博客有介绍)。
正则表达式之零宽断言:https://blog.csdn.net/weixin_43348064/article/details/105804348
<script>
//比如说一件商品单价为¥4051.25,小明买了4件
var price = "4051.25";
var count = 4;
//小明需要支付¥4051.25*4
var zprice = (price * count).toFixed(2);
price = price.replace(/(\d)(?=(\d{3})+(\.|$))/g, "$1,");
zprice = zprice.replace(/(\d)(?=(\d{3})+(\.|$))/g, "$1,");
console.log(
`小明买了${count}件单价为¥${price}的包包,需要支付¥${zprice}`
);
</script>
输出结果
这样子就实现了千分符了,来看一下上面正则表达式
/(\d)(?=(\d{3}+(\.|$)))/
是什么意思, 这里的((?=(\d{3})+(\.|$))
是零宽断言,捕获离结尾或.三位数的倍数之前的数字,然后将捕获到的数字进行替换,$1是获取正则表达式的第一个()里面的内容。
这样就解决千分符的问题啦。
东哥笔记