$re = '/([0]?[1-9]|[1-2][0-9]|[3][0-1])(-|\/|.)(Jan(uary)?|Feb(uary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(st)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?|[0][1-9]|[1][0-2])\2(1?9?[0-9](0?[1-9])|2000)/m';
$str = '1-11-1999
1-Nov-1999
1.Nov.1999
1-November-99
35-Nov-2001
31-13-92
32-Feb-1992';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php