为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式将阿拉伯数字每隔三位为一逗号分离

正则表达式将阿拉伯数字每隔三位为一逗号分离

郎朗坤 2019-04-21 20:37:22
"115000000".split("").reverse().join("").replace(/(\d{3})(?=[^$])/g,"$1,").split("").reverse().join("");在网上找到了一种解法,可是有个地方没明白。如下:replace(/(\d{3})(?=[^$])/g,"$1,")这里的(?=[^$])有什么作业??难道就replace(/(\d{3})/g,"$1,")不可以吗??麻烦大家看看,帮我解答下,,蟹蟹
查看完整描述

2 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。
可以理解为?=是一个狂妄的预言家,假设有正则/abc?=xxx/,它预言自己出现的位置后面一定、肯定、必须、只能是xxx,如果不是,那它会以死明志的(就是匹配失败)。
那么:
1.(?=[^$])会匹配除字符除末尾所有的位置
2./(\d{3})(?=[^$])/会匹配连续的三个数字,并且这三个数字不能在字符串的末尾
3.题主疑问的replace(/(\d{3})/g,"$1,"),如果字符串长度刚好是三的倍数,那最后三个字符后也会加上逗号。比如123456789.replace(/(\d{3})/g,"$1,");//123,456,789,
                            
查看完整回答
反对 回复 2019-04-21
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

是要这样吗?
varnumber=123456789;
number.toLocaleString()//"123,456,789"
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 482 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号