Требуется формат даты XSD

1

В XSD я хочу проверить формат даты в MM/DD/YYYY с помощью регулярного выражения. В настоящее время я использую следующий синтаксис, который дает мне вывод в YYYY-DD-MM.

<xs:simpleType name="dateVal"> <xs:restriction base="xs:string"> <xs:pattern value="(19|20)((([02468][48]|[13579][26])-0?2-29)|\d\d-((0?[469]|11)-([012]?\d|3‌​0)|(l)-([012]?\d|3[01])|(0?2-([01]?\d|2[0-8]))))"></xs:pattern> </xs:restriction> </xs:simpleType>

Может ли кто-нибудь помочь мне исправить это для MM/DD/YYYY. Заранее спасибо.

  • 0
    <xs: simpleType name = "dateVal"> <xs: ограничение base = "xs: string"> <xs: pattern value = "(19 | 20) ((([02468] [48] | [13579] [26] ?) -0 2-29) | \ д \ д - ((0 [469] | 11) - ([012] \ д |? 30) | (л) - ([012] \ д |? 3 [ 01]) | (0? 2 - ([01]? \ D | 2 [0-8])))) "> </ xs: pattern> </ xs: ограничение> </ xs: simpleType>
Теги:
xsd

2 ответа

2

Попробуй это:

<xsd:simpleType name="Date">
   <xsd:restriction base="xsd:string">
     <xsd:pattern value="^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$"/>
   </xsd:restriction>
</xsd:simpleType>
  • 0
    Я хочу для проверки ниже. 1) Непринятые значения: 29.02.2014, 02/31 / 2014,04 / 31/2014 2) Допустимые значения 29.02.2016 (високосный год).
  • 0
    @ user964698: - Я обновил свой ответ. Пожалуйста, проверьте!
0

Этот шаблон регулярного выражения будет соответствовать формату даты MM/DD/YYYY.

^([0]\d|[1][0-2])\/([0-2]\d|[3][0-1])\/([2][01]|[1][6-9])\d{2}(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1,2})?$

Рабочий пример здесь.

Как отмечалось в комментариях, это не работает как шаблон XSD. Удаление якорей и неправильное экранирование / символов приводят к:

([0]\d|[1][0-2])/([0-2]\d|[3][0-1])/([2][01]|[1][6-9])\d{2}(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1,2})?

Кроме того, взгляните на это: Регулярное выражение, соответствующее действительной дате

  • 0
    это не работает. Можете ли вы изменить его и дать мне.
  • 0
    Это работает. Посмотрите на пример, который я привел.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню