RegEx для указанного диапазона длины строки: элемент атрибута XSD - PullRequest
4 голосов
/ 20 января 2012

Я пытаюсь ограничить элемент атрибута схемы длиной от 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 ]

4 голосов
/ 20 января 2012

a-Z - недопустимый диапазон, вместо него следует использовать нижний регистр z a-z

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

Обратите внимание, что a значение ascii равно 97, а Z равно 90, поэтому вы фактически определяли интервал от 97 до 90 => end-point code is lower than the start-point code

1 голос
/ 20 января 2012

Вы также можете использовать xs:maxLength и xs:minLength:

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