2011-06-06 57 views
0

我需要能夠驗證數字和XSD如下所示: \ d {0,15}(。\ d \ d)?XSD中的數字驗證正則表達式

因此,最多15個數字後跟一個可選的小數點後兩位數。

美中不足的是,我希望它不會接受這些數字也:

0.00 
0 
00000 
000.00 

什麼是做到這一點的好辦法,並在我們的XSD使用它?

謝謝, 亞歷克斯

+0

爲什麼?爲什麼? – 2011-06-06 21:14:15

回答

1

你可以用前綴負前瞻的正則表達式:

(?!0*(\.00)?) 

給:

^(?!0*(\.00)?$)\d{0,15}(.\d\d)?$ 

注意,這也將拒絕一個空字符串。

+0

太棒了!謝謝。我們有一些非常相似的東西,但是我們的SAXParser不喜歡這個正則表達式。我們需要在解析器上設置一些選項。 – 2011-06-06 20:13:35

+0

XSD正則表達式不支持此語法。 – 2011-06-06 21:13:17

0

如何

[1-9]\d{0,14}(\.\d{2})? 

我還要第二什麼@MRAB暗示。您的正則表達式將與空字符串匹配(零個數字後跟零個「點位數字」)。這一個至少需要1-9個數字存在,並且任何具有多於一個數字的數字都有一個第一個數字在1和9之間。

1

你對所接受的事情非常精確,而是對你想要拒絕的東西不確切。是否要拒絕任何具有十進制值零的東西,而不管它是如何寫入的?在這種情況下,解決方案應該在模式方面有<minExclusive value="0"/>方面。事實上,我不確定使用totalDigits和fractionDigits方面無法做到這一點。