У меня RegEx, что подтверждает дату вступления в Я хочу, чтобы:./мм DD/YYYY или ММДДГГГГ RegEx проверки
ММ/дд/гггг М/d/YYYY MM-dd- YYYY MdYYYY MM.DD.YYYY MdYYYY ММДДГГГГ
И несколько других вариантов.
Вот мое выражение:
^((0[1-9]|1[012])[- /.]?(0[1-9]|[12][0-9]|3[01])[- /.]?(19|20)\d\d)|((((0?[13578])|(1[02]))[- /.]?((0?[1-9])|([12][0-9])|(3[01]))|((0?[469])|(11))[- /.]?((0?[1-9])|([12][0-9])|(30))|(0?[2])[- /.]?((0?[1-9])|([1][0-9])|([2][0-8])))[- /.]?(19\d{2}|20\d{2}))|(((0?[2]))[- /.]?((0?[1-9])|([12][0-9]))[- /.]?((19|20)(04|08|[2468][048]|[13579][26])|2000))$
Я получаю большинство работать, но даты, что я не хочу работать в MdYYYY, MMdYYYY или MddYYYY
Я хочу RegEx к это единственное, что изменилось, потому что по той же причине вызывается в нескольких местах, ограничивая количество кода, который мне нужно настроить.
Я звоню это RegEx из этого случая утверждение, которое находится в моем обычае TextBoxPlus.ascx:
Case TextBoxPlusType.DateOnlyMMDDYYYY
WatermarkText = "mmddyyyy"
ValidationExpression = "^((0[1-9]|1[012])[- /.]?(0[1-9]|[12][0-9]|3[01])[- /.]?(19|20)\d\d)|((((0?[13578])|(1[02]))[- /.]?((0?[1-9])|([12][0-9])|(3[01]))|((0?[469])|(11))[- /.]?((0?[1-9])|([12][0-9])|(30))|(0?[2])[- /.]?((0?[1-9])|([1][0-9])|([2][0-8])))[- /.]?(19\d{2}|20\d{2}))|(((0?[2]))[- /.]?((0?[1-9])|([12][0-9]))[- /.]?((19|20)(04|08|[2468][048]|[13579][26])|2000))$"
ErrorMessage = "Please enter a valid date format<br><b>mm/dd/yyyy<br>mmddyyyy</b>"
Это на фактической aspx.vb странице вызывающей TextBoxPlus (мой пользовательский контроль):
If (Not (Date.TryParseExact(IssueDate.Text, "MMddyyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo, Globalization.DateTimeStyles.None, New Date))) Then
If (Not (Date.TryParseExact(IssueDate.Text, "MM/dd/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo, Globalization.DateTimeStyles.None, New Date))) Then
showIfBadDate.Visible = True
BadDate_AM.Show()
Else
IssueDate_ = Date.ParseExact(IssueDate.Text, "MM/dd/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo)
End If
Else
IssueDate_ = Date.ParseExact(IssueDate.Text, "MMddyyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo)
End If
Yikes, я бы разделил каждый на отдельное регулярное выражение, а затем поместил весь код проверки в свой собственный метод/функцию. – 4castle
Это регулярное выражение смешно. Если бы мне пришлось это поддерживать, я бы отследил тебя и ударил тебя по голове. Лучше стандартизировать. Выберите нужный формат * one, а затем обработайте вход пользователя в этот формат. Валидация здесь даже не является проблемой. Наличие всех этих разных форматов даты любым разумным способом будет целым другим кошмаром обслуживания. –
смешная история, это старое регулярное выражение, которое я пытаюсь очистить –