$re = '/(?<=\s|^)(1[0-9]{3}|20(0[0-9]|1[0-2]))[\\\\\/\-\s](0[1-9]|1[0-2])[\\\\\/\-\s](0[1-9]|[1-2][0-9]|30)(?=[\s,;]|$)/';
$str = '1000\\03-01
1009/01\\09
1090-12/10
1099-11-11
1900\\31/19
1909\\14\\20
1999-10\\21
2011/29
2001-30
2012-04';
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