io userei una regexp più prolissa ma più sicura (valida per gli anni a partire dal 2007)

$re = "/^(monday|tuesday| ... |sunday)\s(0\d|[1-2]\d|3[0-1])(st|nd|th)\s(january|february| ... |december)\s(200[7-9]|2\d{3})$/i"


al posto dei puntini (...) metti in OR i nomi dei mesi e dei giorni. Il tutto case-insensitive. Ipotizzo che il giorno abbia sempre due cifre