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

How to restrict to numeric digits except 0 after decimal point

我试图限制小数点后的数字,只允许数字为零。例如,如果值为 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}" />

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

为了要求所有的小数位都是0

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

另一个答案是正确的,但它会接受所有类型的 unicode 数字,以确保它只接受西方阿拉伯数字 (1,2,..etc) 我会避免使用 "/ d" in xsd-regex 并使用 [0-9] 代替

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

xsd 中的正则表达式解析器接受像 (١,٢,٣,٤,..etc) 这样的数字作为有效数字。大多不是你想要的

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

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