2013-03-27 76 views
5

我想用正则表达式验证我的货币字段。我想允许以下模式条目正则表达式整数或浮点数与两位小数

1.23 
1 
.45 
0.56 
56.00 

不应该允许使用逗号。我试过\d+(\.\d\d),但它只允许第一,第四和第五项。 \d+(?:\.\d\d+)?允许所有,但第三个。

+0

你试过\ d *(\。\ d *)吗? – Melanie 2013-03-27 21:08:40

+0

不,让我试试。 – 2013-03-27 21:10:20

+0

这些货币如何?我只看到花车。 – Bergi 2013-03-27 21:10:32

回答

7

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

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

您的解决方案运作良好。但它允许'1.254'和'23.1'。我想只允许两位小数。要么不会有小数或只有两位小数 – 2013-03-27 21:25:42

+0

@KrishanuDey这是我不清楚;我更新了它,所以'\ d +'是'\ d \ d' – 2013-03-27 21:30:10

+0

@ExplosionPills:That Worked。 :) 非常感谢。 – 2013-03-27 21:32:52

3

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

\d*\.?\d+ 

至少两小数:

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

为了使它更容易理解:

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

而对于正好有两个小数:

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

不同的语言,不要忘记anchor表达,使其必须在整个字符串相匹配。

相关问题