I need a regular expression that may match dates. However the delimiter of day, month and year may differ. It may be a dot, a dash, a slash...
What I have is
^([012]?[1-9]|3[01])[\\.\\-\\/\\\\](0?[1-9]|1[012])[\\.\\-\\/\\\\](19|20)\\d{2}$
So it's
([012]?[1-9]|3[01]) --the day part
(0?[1-9]|1[012]) --the month part
(19|20)\\d{2} --the year part
The delimiter is repeated twice and, according to my current expression [\\.\\-\\/\\\\]
, may be different...I mean, it matchs, say:
01.01-1986
While I want it to match only when there two dots, or two dashes, or two of whatever the delimiter part allows...So the example given above should NOT match.
I suppose it can somehow be done with grouping pattern of regular expressions. But I have no idea of how to apply this. Also I found myself to be absolutely not aware of how to google this...
Could anyone push me towards the right direction?
P.S.: I've recently watched SO Regular Expression to match valid dates...In my case I do understand that it'll match the 31st in months that do not have it, and all the days absent in February...it's all alright...
In Java I currently use the following code:
String value = "31/12/2086";
String pattern = ...
boolean result = value.matches(pattern);
In C#
string value = "01.01.2014";
string pattern = "";
bool result = Regex.IsMatch(value, pattern);
If there is a way to do what I want to, it would be great if the solution would be appliable to both these languages...Are Java and C# regular expressions compatible?