Как написать регулярное выражение в XSD - PullRequest
1 голос
/ 28 февраля 2020

Я пишу ограничение шаблона XSD, и у меня есть следующие допустимые строки:

  • ^ user
  • ^ user.name
  • {$ username}
  • {$ user1.name}

И ниже указаны недействительные

  • user
  • User
  • USER
  • {username}
  • {user@name}

Правило состоит в том, чтобы начинать строку с ^ или {. Если мы начнем с {, то следующий символ должен быть $, а слово должно заканчиваться}. Не допускается использование заглавных букв или символа @.

Я пробовал эту <xs:pattern value="[\^\{].*\w+\}?"/> эту работу частично, но не удовлетворяет всем условиям

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 28 февраля 2020

Вы можете использовать

<xs:attribute name="label">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="\^[a-z]+(\.[a-z]+)?|\{\$[a-z]+(\.[a-z]+)?}"/>
    </xs:restriction>
  </xs:simpleType>
</xs:attribute>

Регулярное выражение XSD всегда привязано, поэтому две альтернативы в приведенном выше регулярном выражении должны соответствовать всей строке.

Они соответствуют

  • \^[a-z]+(\.[a-z]+)? - ^ символ, затем 1+ строчные буквы ASCII, затем необязательная последовательность . и 1+ строчные буквы ASCII
  • | - или
  • \{\$ - {$ подстрока
  • [a-z]+(\.[a-z]+)? - 1+ строчных букв ASCII, затем необязательная последовательность . и 1+ строчных букв ASCII
  • } - a } char.
...