I see you are trying to use regular expressions to force input validation of numbers. It is doable, but usually not recommended - it is simpler and more readable to just capture digits and verify validity of the captured data later: \d{1,2}[/.-]\d{1,2}[/.-]\d{4}
Especially if you want to reach the year 2100 ;-) This will also allow you to return a more informative error message to the user: instead "error parsing input" you might be able to say things like "Invalid month 13" or some such.
That being said, if you make your regular expression complicated enough you can enforce every requirement: (0?[1-9]|[12]\d|3[0-1])