Ваше регулярное выражение
$date_regex = '!^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$!';
соответствует формату ММ-ДД-ГГГГ.
Другой, который вы хотите сопоставить, прост
$date_regex2 = '!^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.]\d\d$!';
Вы можете просто проверитьлибо это правда.
if(preg_match($date_regex,$date) or preg_match($date_regex2,$date)){
//match
}
Или вы можете объединить их, используя
$mmddyyyy = '!^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$!';
$mmddyy = '!^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.]\d\d$!';
$regex = "($mmddyyyy|$mmddyy)";
if(preg_match($regex,$date){
//match
}
Не самое элегантное регулярное выражение, но оно отлично работает.