我需要能夠驗證數字和XSD如下所示: \ d {0,15}(。\ d \ d)?XSD中的數字驗證正則表達式
因此,最多15個數字後跟一個可選的小數點後兩位數。
美中不足的是,我希望它不會接受這些數字也:
0.00
0
00000
000.00
什麼是做到這一點的好辦法,並在我們的XSD使用它?
謝謝, 亞歷克斯
我需要能夠驗證數字和XSD如下所示: \ d {0,15}(。\ d \ d)?XSD中的數字驗證正則表達式
因此,最多15個數字後跟一個可選的小數點後兩位數。
美中不足的是,我希望它不會接受這些數字也:
0.00
0
00000
000.00
什麼是做到這一點的好辦法,並在我們的XSD使用它?
謝謝, 亞歷克斯
你可以用前綴負前瞻的正則表達式:
(?!0*(\.00)?)
給:
^(?!0*(\.00)?$)\d{0,15}(.\d\d)?$
注意,這也將拒絕一個空字符串。
太棒了!謝謝。我們有一些非常相似的東西,但是我們的SAXParser不喜歡這個正則表達式。我們需要在解析器上設置一些選項。 – 2011-06-06 20:13:35
XSD正則表達式不支持此語法。 – 2011-06-06 21:13:17
如何
[1-9]\d{0,14}(\.\d{2})?
我還要第二什麼@MRAB暗示。您的正則表達式將與空字符串匹配(零個數字後跟零個「點位數字」)。這一個至少需要1-9個數字存在,並且任何具有多於一個數字的數字都有一個第一個數字在1和9之間。
你對所接受的事情非常精確,而是對你想要拒絕的東西不確切。是否要拒絕任何具有十進制值零的東西,而不管它是如何寫入的?在這種情況下,解決方案應該在模式方面有<minExclusive value="0"/>
方面。事實上,我不確定使用totalDigits和fractionDigits方面無法做到這一點。
爲什麼?爲什麼? – 2011-06-06 21:14:15