XSD中的数字验证正则表达式

时间:2011-06-06 19:42:34

标签: xml regex xsd

我需要能够验证数字和XSD是这样的: \ d {0,15}(\ d \ d)?

因此,最多15位数后跟一个可选的小数,后跟两位数。

问题在于我希望它不接受这样的数字:

0.00
0
00000
000.00

有什么好方法可以做到这一点,并在我们的XSD中使用它?

谢谢, 亚历

3 个答案:

答案 0 :(得分:1)

您可以在正则表达式前加上前瞻性的前瞻:

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

给予:

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

请注意,这也会拒绝空字符串。

答案 1 :(得分:1)

你对自己想要接受的事情非常准确,但对于你想拒绝的事情则不准确。是否要拒绝任何小数值为零的内容,无论它是如何写入的?在这种情况下,解决方案是在图案刻面旁边有一个<minExclusive value="0"/>刻面。事实上,我不确定你是否无法使用totalDigits和fractionDigits方面来实现整个事情。

答案 2 :(得分:0)

怎么样

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

我也想知道@MRAB暗示的是什么。你的正则表达式将匹配空字符串(零数字后跟零“点数字数字”)。这个要求至少有一个1-9的数字,并且任何一个数字超过一个数字的第一个数字在1到9之间。