Saturday, June 13, 2015

Date super regex

The regular expression below checks if date is in dd/mm/yyyy format. It also checks if the inserted year has february 29th or not.

(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))

I don't remember where I have got this regex, but it is extremely useful.

You can check the functionality below.

Date


This is the source code of the example above:

Html:
Date <input id="txtDate" placeholder="dd/mm/yyyy" type="text" />
<input onclick="dateCheck()" type="button" value="Check date" /><br />
<span id="spInfo"></span>


Javascript:
function dateCheck()
{

var text=document.getElementById("txtDate").value;
var patt=/(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))/;
var result = patt.test(text);
var resultSpan=document.getElementById("spInfo");
if(result==true)
{
resultSpan.innerHTML="Date is correct";
}
else
{
resultSpan.innerHTML="Date is incorrect";
}
}

No comments:

Post a Comment