用逗号匹配十进制 12,2 以分隔千位组的正则表达式

Regular Expressions to Match Decimal 12,2 With Comma to Separate Groups of Thousands

我想确保输入的小数点前不超过 10 位,以便匹配 DECIMAL(12,2)。

我已经试过了:

^(?=.{0,13}$)[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?$

但是它也计算小数点后的数字,所以我要匹配的是:

1,111,111,111.00

所以不管有没有小数点都会匹配,我试过的只能匹配:

1,111,111,111

您可以从字符串的开头断言,右边是一个数字的 1-10 倍,后跟一个可选的逗号,后跟一个点和 2 个数字。

然后使用模式来匹配准确的格式。

请注意 在您的模式中,末尾的 (\.[0-9]+)? 可以匹配超过 2 个数字。如果要匹配可选的点和 2 位数字,请使用 (?:\.[0-9]{2})?

^(?=(?:\d,?){1,10}(?:\.\d{2})?$)[0-9]{1,3}(?:,[0-9]{3})*(?:\.[0-9]+)?$

Regex demo