我想驗證一個數字。該數字必須從-99.99到+99.99,但0(零)除外。 我想出了這個正則表達式表達RegEx number [-99.99 ..- 0.01] + [0.01..99.99]
[-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9]))
,但它不處理這種類型的號碼:
x0
xy.00
任何想法?
編輯: 我想對xsd文件做一個限制。
我想驗證一個數字。該數字必須從-99.99到+99.99,但0(零)除外。 我想出了這個正則表達式表達RegEx number [-99.99 ..- 0.01] + [0.01..99.99]
[-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9]))
,但它不處理這種類型的號碼:
x0
xy.00
任何想法?
編輯: 我想對xsd文件做一個限制。
嘗試:
[+-]?([1-9]\d?(\.\d\d?)?|0\.[1-9]\d?||0\.0[1-9])
含義:
[+-]? # optional '+' or '-'
( #
[1-9]\d?(\.\d\d?)? # 1 - 99.99
| # OR
0\.[1-9]\d? # 0.1 - 0.99
| # OR
0\.0[1-9] # 0.01 - 0.09
) #
嘗試此正則表達式:
^[-+]?([1-9]\d?(\.\d{1,2})?|0\.(\d?[1-9]|[1-9]\d))$
這將允許任何數目的以數字開頭比0
後跟一個附加的可選數字([1-9]\d?(\.\d{1,2})?
)更大。或者,如果以0
開頭,後跟一個小數點,然後是一個不允許使用00
或0
(0\.(\d?[1-9]|[1-9]\d)
)的序列。
@Gumbo:我做了一點改動,因爲數字「x.y」是不允許的。 用「\。\ d {1,2}」替換「\。\ d {2}」。 ---這適用於我:[ - +]?([1-9] \ d?(\。\ d {1,2})?| 0 \。(\ d?[1-9] | [1 -9] \ d)) – 2010-01-05 14:37:05
@ st.stoqnov:那麼只允許有兩位小數的數字? – Gumbo 2010-01-05 14:42:13
@Gumbo:不可以,不允許帶有一位或兩位小數的數字。 – 2010-01-05 14:58:09
好了,你可以簡單地添加兩個案例爲丟失號碼...開始從原來的正則表達式,
[-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9])|(\d0)|([1-9]\d\.00)|(\d[1-9].00))
BTW,而不是\d{1,2}
似乎略勝一籌寫\d\d?
;類似地\d?
而不是\d{0,1}
。
在任何情況下,這似乎是一個痛苦的練習。你不能使用正則表達式來驗證這是一個你想要的格式的數字,並使用一個單獨的約束來使它不爲零?
試試這個
^\d{0,2}(\.\d{1,2})?$/
不。接受'0','0.0'和'0.00' – 2010-01-05 14:34:23
你爲什麼要使用正則表達式來做到這一點? – 2010-01-05 14:09:05
爲什麼使用正則表達式?你不能把它當作一個數字嗎? – 2010-01-05 14:09:28
數字總是有兩位小數,還是'45'也有效?只有'0'無效,或者'0.0'和'0.00'? – 2010-01-05 14:19:09