Omu
Omu

Reputation: 71198

Regex for Date in format dd.MM.yyyy?

Trying to create a regex for Date in this format dd.MM.yyyy.

I want to use it with a DataAnnotation, like this

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

Upvotes: 1

Views: 24939

Answers (5)

Ian
Ian

Reputation: 34489

Just because I always find this site useful, here is an online regex checker. On the right hand side it also has examples and community contributions. In there are a number of Date matching regex variations.

You can type in a load of dates you wish to match and try some of the different examples if you're not sure which is best for you. As with anything, there are multiple ways to solve the problem, but it might help you choose the one that fits best.

Upvotes: 1

M3t0r
M3t0r

Reputation: 182

[0-3]{0,1}[0-9]\.[0-1]{0,1}[0-9]\.[0-9]{4,2}

matches: 28.2.96, 1.11.2008 and 12.10.2005

Upvotes: 1

Noldorin
Noldorin

Reputation: 147270

I suggest that regex is not exactly the best way to do this. You haven't given the context, so it's hard to guess what you're doing overall... but you might want to create a DateExpression attribute or such and then do:

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

in wherever your converter is defined.

Upvotes: 7

Julien Hoarau
Julien Hoarau

Reputation: 49970

^(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)[0-9]{2}$

This regex matches 01.01.1900, 01.01.2000 but doesn't match 1.1.2000 or 1/1/00.

Upvotes: 4

Matteo Mosca
Matteo Mosca

Reputation: 7448

^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$ 

This one also accepts - and / as separators. You can remove them if you want.

Upvotes: 0

Related Questions