RegEx指定的字符串长度范围:XSD属性元素

时间:2012-01-20 17:28:30

标签: regex xml xsd xml-attribute

我正在尝试将架构的属性元素限制在3到20个字符之间,但是我收到错误,说我的RegEx无效:

<xs:attribute name="name" use="required">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Za-Z]{3,20}" />
        </xs:restriction>
    </xs:simpleType>
</xs:attribute>

知道我在这里做错了什么吗?具体错误为"Range end code point is less than the start end code point"

2 个答案:

答案 0 :(得分:4)

a-Z是无效范围,您应该使用小写z代替a-z

 <xs:pattern value="[A-Za-z]{3,20}" />

请注意,a ascii值为97且Z为90,因此您实际上定义的间隔为97到90 =&gt; end-point code is lower than the start-point code

答案 1 :(得分:1)

您还可以使用xs:maxLengthxs:minLength

<xsd:restriction base="xsd:string">
  <xsd:minLength value="3"/>
  <xsd:maxLength value="20"/>
</xsd:restriction>