Регулярное совпадение первых 28 дней месяца - PullRequest
3 голосов
/ 08 сентября 2008

Я ищу регулярное выражение, которое будет соответствовать, только если дата находится в первых 28 днях месяца. Это для моего валидатора в ASP.NET

Ответы [ 5 ]

18 голосов
/ 08 сентября 2008

Не делайте этого с Regex. Даты по-разному форматируются в разных странах. Вместо этого используйте процедуру DateTime.TryParse:

DateTime parsedDate;

if ( DateTime.TryParse( dateString, out parsedDate) && parsedDate.Day <= 28 )
{
 // logic goes here.
}

Regex - это почти золотой молот проверки ввода, но в данном случае это неправильный выбор.

2 голосов
/ 08 сентября 2008

Я не думаю, что эта задача очень хорошо подходит для регулярных выражений.

Я бы попытался использовать библиотечные функции (DateTime.Parse для .NET), чтобы проанализировать дату, а затем проверить ее дневную составляющую. Все остальное дублирует половину библиотечной функции в любом случае.

1 голос
/ 08 сентября 2008

Я бы использовал один из методов DateTime.TryParse в сочетании с CustomValidator

1 голос
/ 08 сентября 2008
  ([1-9]|1\d|2[0-8]) // matches 1 to 28 but woudn't allow leading zeros for single digits
(0?[1-9]|1\d|2[0-8]) // matches 1 to 28 and would allow 01, 02,... 09

(где \ d соответствует любой цифре, используйте [0-9], если ваш движок регулярных выражений не поддерживает это.)

См. Также вопрос Что такое шаблон регулярного выражения для datetime (2008-09-01 12:35:45)?

1 голос
/ 08 сентября 2008

Почему бы просто не преобразовать его в тип данных date и проверить день? Использование регулярного выражения, хотя и может быть сделано, только усложняет задачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...