Ksh*_*rma 3 java regex xml xsd
我有以下XSD元素:
<xsd:element name="password">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<!-- Length check -->
<xsd:pattern value=".{9,12}" />
<!-- Format check -->
<xsd:pattern value=".*\d{2,}.*" />
<xsd:pattern value=".*[A-Z]{1,}.*" />
<xsd:pattern value=".*[a-z]{1,}.*" />
<xsd:pattern value=".*\p{Punct}.*" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)
我想单独应用这些模式.首先应检查长度是否合适.如果是,则检查它至少有2位数,依此类推.相反,它将所有表达式连接在一起并尝试将它们一起应用.
这是非常糟糕的设计.如果只允许一个模式,<xsd:restriction>则应将基数定义<xsd:pattern>为1.允许多次<xsd:pattern>给人的印象是支持多种模式.
有没有办法将多个模式应用于XSD元素?
支持每个限制的多个模式,但它们并不意味着AND; 他们的意思是OR:
注意:
<restriction>包含多个<pattern>元素的XML 在集合中产生单个正则表达式.这个·正则表达式·是正则表达式的"或",它们是<pattern>元素的内容.
如果要同时应用多个正则表达式约束,请将它们写在一个中<pattern>.
对于最小/最大长度约束,而不是使用<pattern>,请考虑使用<minLength>和<maxLength>facet.