Регулярное выражение для проверки даты – dd / mm / yyyy – PHP

Может ли кто-нибудь показать мне ошибку моих путей, когда дело доходит до этого регулярного выражения:

if(preg_match("/^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$/", $_POST["date"]) === 0) { echo 'error'; } 

В основном я хочу, чтобы это отображало сообщение об ошибке каждый раз – если формат не правильный (dd / mm / yyyy).

Что я делаю неправильно с вышеуказанным?

Большое спасибо за любые указатели.

– обновленное регулярное выражение выше вскоре после публикации – извинения за неудобства –

Я думаю, вам следует избегать косых черт /^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/

Вам нужно избежать слэш, поскольку вы используете его как разделитель регулярных выражений

 /^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/ 

или использовать разные разделители регулярных выражений

 #^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$# 

Вы также можете использовать этот:

 ([0-2]\d|3[0-1])\/(0\d|1[0-2])\/(19|20)\d{2} 

если вы хотите провести различие между датами и месяцами, а также проверить только 2 века.

Я использую это для проверки дат

 private function validate_date( $date, $empty_allowed = true ) { if ( empty( $date ) ) { return $empty_allowed; } if ( ! strpos( $date, '/' ) ) { return false; } if ( substr_count( $date, '/' ) !== 2 ) { return false; } if ( preg_match( '/(0[1-9]|1[0-9]|3[01])\/(0[1-9]|1[012])\/(2[0-9][0-9][0-9]|1[6-9][0-9][0-9])/', $date ) !== 1 ) { return false; } $split = explode( '/', $date ); return checkdate( $split[1], $split[0], $split[2] ); }