Regex 如何限制小数点后除0以外的数字

Regex 如何限制小数点后除0以外的数字,regex,xml,xsd,xsd-validation,Regex,Xml,Xsd,Xsd Validation,我试图限制小数点后的数字,只允许数字零。例如,如果该值为3431.0000,则该值有效。但是,如果该值为3431.1110或3431.1000,则该值无效。有谁能帮我在我的模式文件中添加规则来限制这样的需求吗?我使用JAXB验证器来验证模式,下面是模式文件中的代码片段 <xs:simpleType name="Decimal8-2"> <xs:restriction base="xs:decimal"> <xs:fractionDig

我试图限制小数点后的数字,只允许数字零。例如,如果该值为3431.0000,则该值有效。但是,如果该值为3431.1110或3431.1000,则该值无效。有谁能帮我在我的模式文件中添加规则来限制这样的需求吗?我使用JAXB验证器来验证模式,下面是模式文件中的代码片段

<xs:simpleType name="Decimal8-2">
        <xs:restriction base="xs:decimal">
        <xs:fractionDigits value="4" />
        <xs:minExclusive value="0" />
        <xs:pattern value="\d+\.\d{4}" />
        </xs:restriction>
    </xs:simpleType>

你们非常接近。换衣服

  <xs:pattern value="\d+\.\d{4}" />


为了要求所有分数位数都是
0


<xs:pattern value="\d+\.0{4}" />
上面的答案是正确的,但它将接受unicode中的所有类型的数字,为了确保它只接受(西方)阿拉伯数字(1,2,…),我将避免在xsd正则表达式中使用“/d”,而是使用[0-9],就像这样

<xs:pattern value="[0-9]+\.0{4}" />

xsd中的正则表达式解析器接受像[١,٢,٣,٤]这样的数字作为有效数字。大部分不是你想要的

如果您想避免像092这样的前导零,那么使用[0-9]也很方便,这样您就可以将正则表达式写成:

<xs:pattern value="[1-9][0-9]*\.0{4}" />


棒极了,兄弟,成功了!非常感谢您为它指明了正确的方向。请注意,当您使用模式方面来限制数字类型的词法空间时,对于任何必须生成此XML格式的应用程序来说,您的工作都非常困难。我的建议是,模式应该始终允许映射到相同基础值的可选词汇表示。当然,如果您试图约束数据以满足现有应用程序的需求,这可能不适用。
<xs:pattern value="[1-9][0-9]*\.0{4}" />