[javascript] 使用正则替换逗号分割钱
const val = ['12', '123', '1234', '12345', '123456', '1234567', '1234442313123'] const reg = /(?<=\d)(?=(\d{4})+(?!\d))/g let res = '' val.forEach(i => { const num = i.replace(reg, ',') res += `${num}` res += ' ' }) console.log(res) >>> 12 123 1234 1,2345 12,3456 123,4567 1,2344,4231,3123
const val = ['12', '123', '1234', '12345', '123456', '1234567', '1234442313123'] const reg = /(?<=\d)(?=(\d{3})+(?!\d))/g let res = '' val.forEach(i => { const num = i.replace(reg, ',') res += `${num}` res += ' ' }) console.log(res) >>> 12 123 1,234 12,345 123,456 1,234,567 1,234,442,313,123
const reg = /(?<=\d)(?=(\d{3})+(?!\d))/g 解释
因为只匹配位置, 不能改变原来的数值,所以正则用的都是前瞻运算符
中间的(?=(\d{3})+ 表示后面的数字, 每三个为一组, 前面的(?<=\d)
表示前面出现的一定是数字,相当于去掉 ,123,345的情况,
结尾出现的 (?!\d) 表示匹配的(三个三个的数字分组的)结尾不能是数字
前面是数字, 中间是3位一组的数字组,结尾不能是数字
本想把生活活成一首诗, 时而优雅 , 时而豪放 , 结果活成了一首歌 , 时而不靠谱 , 时而不着调