2013-03-27 205 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表達,使其必須在整個字符串相匹配。

相關問題