2011-11-28 335 views
1
^(0)?[0-9]{0,}((\.){1}[0-9]{0,2}){0,1}$ 

上述正則表達式允許我在小數點(。)點之前輸入小數點後4位小數位,並且可選0。但是當我沒有像小數點後面輸入數字時,它不會拋出錯誤,比如0.12,等等。 !正則表達式只允許輸入小數

對此的任何指導。

+0

你想匹配什麼數字?舉一些例子。此外,您的正則表達式允許最多2位小數。 – Toto

+0

這是正確的......它在小數點後兩位數字。 有效數字:.23,12.23,12,12.2等。 無效數字:10.,12.326等 塞巴斯蒂安的回覆已經解決了這個問題。非常感謝@ M42 – Premanshu

回答

3

這是因爲您允許在.之後的0和2之間的數字。

既然你說你1個4位之間的想,你可能希望這樣的:

^[0-9]*(\.[0-9]{1,4})?$ 

注意,我已經取代{0,}*{0,1}?,因爲他們是等價的。

另外,我刪除了{1},因爲它默認匹配一次。

最初的(0)?也有點多餘。

請注意,此正則表達式匹配.50。如果你想確保小數點前的數存在,第一*更改爲+像這樣:

^[0-9]+(\.[0-9]{1,4})?$ 

爲了進一步簡化正則表達式,你也可以用\d在大多數的正則表達式引擎取代[0-9] ,給你:

^\d+(\.\d{1,4})?$ 
+0

謝謝塞巴斯蒂安先生的清晰解釋。我用 ^ \ d *(\。\ d {1,2})?$ 達到我的目的 – Premanshu

+0

@Premanshu:樂於幫忙。注意,如果你想讓它允許12.3456,你將不得不將2更改爲4. –

+0

是的,我做了...並且我允許用戶輸入.23或.5 :) – Premanshu