2013-07-05 34 views
5

需要的正則表達式,其具有:(。)小數點前普通價格驗證表達式

  1. 最大8位小數點後指向
  2. 最大4位數字
  3. 小數點是可選

最大有效小數位數是小數點後8位數和小數點後4位數 所以99999999.9999

我試過的正規rexpression ^\ d {0,8} [。]?\ d {1,4} $對於123456789 而言是失敗的,並且不止於此。意味着如果小數點不可用,它會佔用8位以上的數字。

這裏測試:http://regexpal.com/

許多許多在此先感謝!

+0

價格不能爲負值嗎? –

+0

不,不適合我的情況! – user2338652

回答

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

可以使整個小數可選

+1

您需要在句點(點)前放置反斜槓:ie((\。\ d {1,4})) ?'否則你接受包括另一個數字的任何字符。 –

5

你可以試試這個:

^\d{1,8}(?:\.\d{1,4})?$ 

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

如果你不希望有一個零作爲第一個數字。

,如果你想,你可以允許這樣的:(0.1234)

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

感謝您的超快反應!我發現它是.12345678失敗它應該只需要.1234。 – user2338652

+0

@ user2338652如果您希望值爲小數點後的最大4位數。如果大於4,則不應接受輸入。這可能會導致**舍入**錯誤。只是**不會* *接受輸入,如果它不符合你的標準..和** valiadation!=匹配** – Anirudha

+0

@ user2338652僅供參考,你接受的答案也在「.123456789」上「失敗」。 –

3

上述任何對我沒有工作。 僅限於此作品

^([0-9]{0,2}((.)[0-9]{0,2}))$