我需要能够验证数字和XSD是这样的: \ d {0,15}(\ d \ d)?
因此,最多15位数后跟一个可选的小数,后跟两位数。
问题在于我希望它不接受这样的数字:
0.00
0
00000
000.00
有什么好方法可以做到这一点,并在我们的XSD中使用它?
谢谢, 亚历
答案 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之间。