Asp.net DataAnnotations Regex предварительно оценивает Char на основе Char - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь написать регулярное выражение, которое фиксирует год и неделю.Для ASP.net ViewModel.

Вот выражение, которое я сейчас использую.

 [RegularExpression(@"[\d]{4}-[0-5]\d", ErrorMessage = "Work Week Requires 4 digit year - 2 Week.  e.g. 2019-09")] 

Это делает большую часть того, что я хочу, но есть несколько случаев, когда он не обрабатывается.

Вот то, что я пытаюсь захватить / отклонить

2001-01  good
2001-10  good
2001-01  good
2001-10  good
2010-1   good
6502-9   good
4657-09  good
2003-01  good
2056-53  good
2056-54  bad
2068-60  bad 
5416-00  bad 
2015-0   bad

10000-15 would be nice to catch but I'm Ok with this code breaking 8000 years from now 

Я создал regex101 с этой проблемой https://regex101.com/r/iL5rpY/2

Задача

Я не знаю, как оценить Char на основе Char до,

Вопрос

Как создать регулярное выражение, которое захватывает все текстовые версии целых чисел от 1 до 53?

1 Ответ

0 голосов
/ 17 мая 2018

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

^0*\d{4,5}-0*(?:[1-9]|[1-4]\d|5[0-3])$

См. Демоверсию regex .

Детали

  • ^ - начало строки
  • 0* - ноль или более 0 с
  • \d{4,5} - 4 или 5 цифр
  • - - дефис
  • 0* - ноль или более 0 с
  • (?:[1-9]|[1-4]\d|5[0-3]) - либо цифра от 1 до 9, либо цифра от 1 до 4, а затем любая цифра или 5 с последующими 0, 1, 2 или 3
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...