I have the following expression which will be used as date validation in the HTML5 “pattern” attribute.
?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))-(?:(?:0[1-9]|1[0-2])-(?:19|20)[0-9]{2}
I want it to allow only valid dates, using “-” as a separator.
This means up to 29th in February if it’s a leap year, and 30/31 for other months respectively.
Currently, it only allows years starting with 2 (2012) and months up to 12 (December).
But it limits the day to 29 regardless of which month.
Can anybody help me fix it?
^(((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))))$