[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位一组的数字组,结尾不能是数字


posted @ 2024-10-14 11:22  深海里的星星i  阅读(12)  评论(0编辑  收藏  举报