带有两位小数的整数或浮点数的正则表达式

时间:2013-03-27 21:06:38

标签: regex

我想用regex验证我的货币字段。我想允许以下模式条目

1.23
1
.45
0.56
56.00

不允许使用逗号。我已经尝试了\d+(\.\d\d)但它只允许第一,第四和第五个条目。 \d+(?:\.\d\d+)?允许除第三个以外的所有人。

2 个答案:

答案 0 :(得分:8)

在小数点前使用\d*代替\d+来匹配零个或多个数字。还要添加锚点(^$),否则只要有可用的匹配就会传递。这也会验证一个空字符串,所以如果有必要,你可以使用前瞻来确保至少有一个数字:

^(?=.*\d)\d*(?:\.\d\d)?$

答案 1 :(得分:3)

Regexes for floating-point numbers是一个已解决的问题:

\d*\.?\d+

至少两位小数:

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

使其更易于理解:

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

正好两位小数:

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

根据您的语言,不要忘记anchor表达式,以便它必须与整个字符串匹配。