Регулярное выражение для года / календарной недели - PullRequest
0 голосов
/ 21 января 2011

мои навыки RegularExpression нуждаются в улучшении. Так что, возможно, кто-нибудь может помочь мне вернуться на правильный путь.

Фон : у меня есть текстовое поле, в котором пользователь может ввести комбинацию год / неделя вместо ввода даты. Я конвертирую это на сервере в экземпляр даты (последний день этой недели). Теперь мне нужно проверить это с помощью RegularExpressionValidator.

Формат : примерный формат может быть 10w32 для 2010 года и календарной недели 32. Цифра w не учитывает регистр. Номер недели должен быть от 1 до 53. Другие действительные примеры:

99w02  -> 1999 week 2
2W53   -> 2002 week 53
2001w1 -> 2001 week 1

Заранее спасибо.

1 Ответ

2 голосов
/ 21 января 2011

Как насчет

\d{1,4}[wW](\d|([0-4]\d)|(5[0123]))

? (Подходяще сбежал, конечно).

Пояснение:

  • 1-4 цифры
  • W или W
  • Либо одна цифра ...
  • ... или две цифры, первая ли цифра 0-4, а вторая любая цифра
  • ... или 5, за которыми следуют 0, 1, 2 или 3

Возможно, что некоторая группировка в альтернативной конструкции не нужна - это тоже может сработать:

\d{1,4}[wW](\d|[0-4]\d|5[0123])

... проверить это, чтобы увидеть.

Это полностью не проверено, заметьте ... юнит-тесты - ваш друг, а также тщательное изучение.

Используйте ^ в начале и $ в конце, чтобы заставить регулярное выражение соответствовать всей строке, например,

^\d{1,4}[wW](\d|[0-4]\d|5[0123])$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...