Выражение для даты в формате dd.MM.yyyy? - PullRequest
0 голосов
/ 01 июля 2010

Попытка создать regex для даты в этом формате dd.MM.yyyy.

Я хочу использовать его с DataAnnotation, вот так

[RegularExpression(@"<theregex>")]
public DateTime Date { get; set; }

Ответы [ 5 ]

7 голосов
/ 01 июля 2010

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

return DateTime.ParseExact(value, "dd.MM.yyyy");

там, где определен ваш конвертер.

4 голосов
/ 01 июля 2010
^(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)[0-9]{2}$

Это регулярное выражение соответствует 01.01.1900, 01.01.2000, но не соответствует 1.1.2000 или 1/1/00.

1 голос
/ 01 июля 2010

Только потому, что я всегда нахожу этот сайт полезным, вот онлайн-проверка регулярных выражений .На правой стороне также есть примеры и вклад сообщества.Существует несколько вариантов регулярных выражений для сопоставления дат.

Вы можете ввести множество дат, которые вы хотите сопоставить, и попробовать несколько разных примеров, если вы не уверены, что лучше для вас.Как и во всем, есть несколько способов решения проблемы, но это может помочь вам выбрать тот, который подходит лучше всего.

1 голос
/ 01 июля 2010
[0-3]{0,1}[0-9]\.[0-1]{0,1}[0-9]\.[0-9]{4,2}

совпадений: 28.2.96, 1.11.2008 и 12.10.2005

0 голосов
/ 01 июля 2010
^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$ 

Этот также принимает - и / как разделители.Вы можете удалить их, если хотите.

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