用逗号匹配十进制 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]+)?$
我想确保输入的小数点前不超过 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]+)?$