これに正規表現を使用する必要はありません (実際にはもっと手間がかかります)。代わりに、PHP の組み込みの日付/時刻関数を使用してください。
strtotime
: 文字列の日付 (事実上すべての形式) を Unix タイムスタンプに変換します。
date
: タイムスタンプを人間が読める日付にフォーマットします
$user_date; #the user-supplied date, any format
$format = 'm/d/Y'; #your desired date format, in this case MM/DD/YYYY
#convert the date to your format
$formatted_date = date($format, strtotime($user_date));
または、DateTime
オブジェクトでこれを行うことができます。与えられ$user_date
、$format
上記から:
$user_date_obj = new DateTime($user_date);
$formatted_date = $user_date_obj->format($format);
また
$formatted_date = date_format(date_create($user_date), $format);
..
つまり、質問に答えるには、正規表現を区切るだけです。スラッシュは機能しますが、正規表現内でリテラル スラッシュを照合しているため、バー/パイプなど、別のものを使用する方が簡単です。
preg_match_all("|[0-9]{0,2}/[0-9]{0,2}/[0-9]{4}|", $string, $matches);
そうすれば、スラッシュ リテラルをエスケープする必要がなくなります。
ちなみに、この正規表現を次のように短縮することもできます。
"|(\d{0,2}/){2}\d{4}|"
\d
は と同じで、 の 2 つのオカレンスをに[0-9]
組み合わせることができます。ただし、これを読むのが難しいと感じる人もいるかもしれません。\d{0,2}/
(\d{0,2}/){2}