strtotime
recognizes every format that is explained in Date and Time Formats. You could take the formats right from there and build the regular expression on your own.
Here’s an example for the time formats:
// Uses Symbols
$frac = "(?:\.[0-9]+)"; //".21342", ".85"
$hh = "(?:0?[1-9]|1[0-2])"; // "04", "7", "12"
$HH = "(?:[01][0-9]|2[0-4])"; // "04", "7", "19"
$meridian = "(?:[AaPp]\.?[Mm]\.?[\0\t ])"; // "A.m.", "pM", "am."
$MM = "(?:[0-5][0-9])"; // "00", "12", "59"
$II = "(?:[0-5][0-9])"; // "00", "12", "59"
$space = "(?:[ \t])";
$tz = "(?:\(?[A-Za-z]{1,6})?|[A-Z][a-z]+(?:[_/][A-Z][a-z]+)+)"; // "CEST", "Europe/Amsterdam", "America/Indiana/Knox"
$tzcorrection = "(?:(?:GMT)?[+-]$hh:?$MM?)"; // "+0400", "GMT-07:00", "-07:00"
// 12 Hour Notation
$Hour_only_with_meridian = "(?:$hh$space?$meridian)"; // "4 am", "5PM"
$Hour_and_minutes_with_meridian = "(?:$hh[.:]$MM$space?$meridian)"; // "4:08 am", "7:19P.M."
$Hour_minutes_and_seconds_with_meridian = "(?:$hh[.:]$MM[.:]$II$space?$meridian)"; // "4:08:37 am", "7:19:19P.M."
$Hour_minutes_seconds_and_fraction_with_meridian = "(?:$hh:$MM:$II[.:][0-9]+$meridian)"; // "4:08:39:12313am"
// 24 Hour Notation
$Hour_and_minutes = "($t?$HH[.:]$MM)"; // "04:08", "19.19", "T23:43"
$Hour_and_minutes_no_colon = "(?:t?$HH$MM)"; // "0408", "t1919", "T2343"
$Hour_minutes_and_seconds = "(?:t?$HH$[.:]$MM[.:]$II)"; // "04.08.37", "t19:19:19"
$Hour_minutes_and_seconds_no_colon = "(?:t?$HH$MM$II)"; // "040837", "T191919"
$Hour_minutes_seconds_and_timezone = "(?:t?$HH[.:]$MM[.:]$II$space?(?:$tzcorrection|$tz))"; // "040837CEST", "T191919-0700"
$Hour_minutes_seconds_and_fraction = "(?:t?$HH[.:]$MM[.:]$II$frac)"; // "04.08.37.81412", "19:19:19.532453"
$Time_zone_information = "(?:$tz|$tzcorrection)"; // "CEST", "Europe/Amsterdam", "+0430", "GMT-06:00"