为什么DOB的正则表达式不被接受?

问题描述 投票:0回答:1

我正在研究一个模式,并希望在1970年1月1日到12月31日之间进行以下限制DOB。

我的代码如下:

xs:element name="DOB">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:pattern value="([0][1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])/(199[0-9]|200[0-9]|201[01])"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

我收到此验证错误:

错误:元素'DOB':[facet'模式']模式'([0] [1-9] | 1 [0-2])/(0 []不接受值'2/3/1981' 1-9] | [12] [0-9] | 3 [01])/(199 [0-9] | 200 [0-9] | 201 [01])”。

regex xml xsd
1个回答
3
投票

如果当天或月份为1-9,请尝试将日期和月份的第一个数字设为可选:

<xs:pattern value="(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])/(19[7-9][0-9]|2000)"/>

Demo

除此之外,你捕捉岁月的模式也存在问题。我使用以下模式来匹配从1970年1月1日到12月31日的所有年份:

(19[7-9][0-9]|2000)
© www.soinside.com 2019 - 2024. All rights reserved.