preg_match: check birthday format (dd/mm/yyyy)


How do I make the expression which checks the birthday input to match a format like this dd/mm/yyyy? Below is what I came out so far, but it takes this too if I put 99/99/9999!

if (!preg_match("/[0-9]{2}\\/[0-9]{2}\\/[0-9]{4}/", $cnt_birthday))
			$error = true;
			echo '<error elementid="cnt_birthday" message="BIRTHDAY - Only this birthday format - dd/mm/yyyy - is accepted."/>';

How can I make sure that its only 01 to 31 for dd and 01 to 12 for mm? but I am sure how to restrict yyyy… I think theoritical 9999 should be acceptable… let me know if you have a better idea!


/^(0?[1-9]|[12][0-9]|3[01])\/\.- \/\.- \d{2}$/

restricts day to 01-31, month to 01-12 and year to 1900-2099 (also allowing / - or . between the parts of the date)

it’s beautiful! thank you so much! :slight_smile: