提问者:小点点

正则表达式-如何验证允许20位数字,多个逗号和一个点的金额?


我们如何验证一个字符串/金额,

  • 20位
  • 多个逗号(可以放置多次,但不能放在第一个字符或点后)
  • 一点

应该通过,

  1. 1231231231.123
  2. 1,231,231,231.123
  3. 123123,1,231.123

应该失败,

  1. 12312312.31.123
  2. 1,231,231,231.12,3
  3. ,123123,1,231.123

编辑:

我已尝试^(\d+)?^(,+)?([.]?\d{0,20})?$此正则表达式。


共1个答案

匿名用户

您可以将此正则表达式与lookahead一起使用:

^(?=(?:\D*\d){1,20}$)\d+(?:,\d+)*(?:\.\d+)?$

正则表达式演示

正则表达式详细信息:

  • ^:开始
  • (?=(?:\d*\d){1,20}$):正面前瞻以确保输入中有1到20个数字
  • \d+(?:,\d+)*(?:\.\d+)?:以1+数字开始,以1+数字结束,允许多个逗号和单点
  • $:结束