5

我想用正则表达式验证我的货币字段。我想允许以下模式条目

1.23
1
.45
0.56
56.00

不允许使用逗号。我试过\d+(\.\d\d)了,但它只允许第一个、第四个和第五个条目。\d+(?:\.\d\d+)?允许除了第三个。

4

2 回答 2

9

在小数点前使用\d*而不是\d+匹配零个或多个数字。还要添加锚点(^$),否则只要有任何匹配项,它就会通过。这也将验证一个空字符串,因此如有必要,您可以使用前瞻来确保至少有一个数字:

^(?=.*\d)\d*(?:\.\d\d)?$
于 2013-03-27T21:11:37.240 回答
2

浮点数的正则表达式是一个已解决的问题:

\d*\.?\d+

至少两位小数:

(\d*\.\d)?\d+

为了使其更易于理解:

\d+|\d*\.\d{2,}

并且恰好是两位小数:

\d+|\d*\.\d{2}

根据您的语言,不要忘记锚定表达式,使其必须匹配整个字符串。

于 2013-03-27T21:13:39.350 回答