这段千分位正则,碰到两位单位,会出现bug请问

image.png100就加了千分位
image.png想要1000加千分位
image.png我用¥就正常

 <a-input-number :formatter="value => `${record.options.currency === '美元' ? '$':record.options.currency === '人民币' ? '¥':'NT'}${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')""
    />
阅读 1.8k
2 个回答

匹配一个数字:(\d)
它后面有1组或多组连续的三个数字,且这n组之后跟着的不是数字:(?=(\d{3})+(?!\d))

且这个数字并不在小数点后:(?<!.\d+)

'NT100.000000000'.replace(/(?<!\.\d+)(\d)(?=(\d{3})+(?!\d))/g,'$1,')

看代码单位是根据其他参数自己设定的,${value}才是需要处理的数字部分吧,只对数字部分进行正则逗号处理,而不是对整体的进行处理,最简单,改动也少。
符号部分不变,替换只处理数字部分。
对整体怎么处理,已经有小伙伴回答了,这边就不赘述了。

`${record.options.currency === '美元' ? '$':record.options.currency === '人民币' ? '¥':'NT'}${value.replace(/\B(?=(\d{3})+(?!\d))/g, ',')}`
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题