$re = '/(
0?[1-9]|1[012]
)
[-\s\/.]
(0?[1-9]
|
[12][0-9]
|
3[01]
)
[-\s\/.]
((?:19|20)?\d\d)
(
(?:\s?(?:-\s*)?)
(?:
(?:
([01]?\d|2[0-3])
:)?
([0-5]?\d)
:)?
([0-5]\d)
(\s*AM|\s*PM)?
)?/x';
$str = 'Tue 01/24/12 1/24/2012 2:56:25 PM
2/23/15
02/02/05
05-02-2015
7/21/15 5:23
10/12/14 03:23
12/01/2013 5:36 PM
08/11/14 14:54
4/30/22 - 4:22 AM';
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