Regex 正则数金额验证

Regex 正则数金额验证,regex,Regex,我想用下面的场景验证金额。下面的正则表达式正在工作,但“,”除外,例如1000.0000 ^(?!0*(\.0+)?$)(\d*(?:\.[0-9]{0,4})?)$ 1 - should pass 0.1 - should pass .1 - should pass 0 - should fail .0001 - should pass .10 - should pass 0.0 - should fail 0.00000 - should fail (only accept 4 digi

我想用下面的场景验证金额。下面的正则表达式正在工作,但“,”除外,例如1000.0000

^(?!0*(\.0+)?$)(\d*(?:\.[0-9]{0,4})?)$

1 - should pass
0.1 - should pass
.1 - should pass
0 - should fail
.0001 - should pass
.10 - should pass
0.0  - should fail
0.00000 - should fail (only accept 4 digits after the decimal point)
1.0000 - should pass
1,000.0000 - should pass
1,000,00.000 - should pass
1,000.0000 - should pass

*
(任意重复次数)更改最后一个
(零或一次重复)(因此
^(?0*(.0+))(\d*(?:[0-9]{0,4})*)$
)将验证应该验证的输入(测试失败的是
,000
.000
的重复)。顺便说一句,您的正则表达式可以得到改进:因为您使用
(任何字符)而不是
\.
(点)或“,”coma,您的正则表达式ie会验证错误的输入,如“1x0000”或“10000”(任何字符)

(![0,]*(\.0+)([,\d]*(?:\.[0-9]{0,4})$
。我只是将小数分隔符前面的
\d
替换为
[,\d]
;也在否定断言中,因此
0000.00
不匹配。它允许在任何地方放置任意数量的逗号,这是合理的,因为本地分组数字的传统不同

另外,您是否希望带有挂点的数字匹配,如
10.
?如果没有,请将
{0,4}
替换为
{1,4}