PHP で MM/DD/YYYY 日付正規表現を作成する
このチュートリアルでは、PHP で mm/dd/yyyy 日付形式の正規表現を作成する方法を示します。
PHP で MM/DD/YYYY 日付正規表現を作成する
正規表現を使用して、式に適用されたルールに従ってユーザー入力を検証できます。正規表現を使用して入力を検証できます。また、正規表現を使用して mm/dd/yyyy 日付形式を検証することもできます。
正規表現を作成して変数に格納できます。preg_match() 関数を使用して、正規表現でランダムな日付形式の入力をテストします。
日付形式 mm/dd/yyyy の正規表現パターンを以下に示します。詳細に説明します。
~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~
正規表現パターンには、常に正しい区切り文字が含まれている必要があります。ここで、~記号はパターンを囲む区切り文字です。
次に、月の形式を mm/dd/yyyy で記述する必要があります。
月は 01-12 の形式で表されます。したがって、月の最初の桁は 0 または 1 のいずれかになります。したがって、01-09 から始まる月には 0[1-9] と記述します。括弧内の 1-9 は、0 の後に書かれた番号を示します。
同様に、1 で始まる月の 10、11、および 12 のみを書き込むことができます。したがって、1 の括弧内に 012 を 1[012] と表記しました。
|を使用します論理 OR を実現するための記号。したがって、これを使用してルールを (0[1-9]|1[012]) として分離します。
最後に、セクションの終わりを示すために、パターンを括弧で囲みます。
次に、区切り文字のルールを mm/dd/yyyy の形式で設定する必要があります。上記のパターンでは、記号 -、/、および。の区切り記号を使用できます。
今、私たちは何日もパターンを書きます。日は 1-30 であるため、01-09 は 0[1-9]、10-29 は 12[0-9]、および日は 0[1-9] と書くことができます。30-31 は 3[01] と書くことができます。
mm/dd/yyyy の形式で、日以降の区切り文字にも同じルールを使用します。
年の最初の 2 桁として 19|20 と表記しました。つまり、年は 19 と 20 からのみ開始できます。19|20 の後にあるパターン\d\d を使用して、19 または 20 の後に続く任意の 2 桁を示します。
これが上記の正規表現の仕組みです。上記の正規表現を使用して、いくつかのテスト日付形式を確認できるようになりました。
そのために、変数 $reg を作成し、上記で記述した正規表現をその中に格納します。次に、配列 $ date を作成し、これらのランダムな日付形式を保存します。
['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865']
次に、foreach ループを使用して、$dates 変数を $date としてループします。preg_match() 関数を使用して、$date 変数を $reg 変数と比較します。
これにより、テスト入力が mm/dd/yyyy 形式の正規表現パターンに準拠しているかどうかを確認できます。
サンプルコード:
$reg = '~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~';
$dates =['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865'] ;
foreach($dates as $date){
if(!preg_match($reg, $date)) {
echo 'the date format '.$date.' is incorrect'."<br>";
} else{
echo 'the date format '.$date.' is correct'."<br>";
}
}
出力:
the date format 03/22/2021 is correct
the date format 22/22/2021 is incorrect
the date format 03\22\2021 is incorrect
the date format 03-22-2021 is correct
the date format 03/22/1865 is incorrect
ここでは、最初の形式はすべてのルールに従います。月を 22 にすることはできないため、2 番目の形式は正しくありません。
\セパレータを指定していないため、3 番目のものは正しくありません。 - 区切り文字を指定したので、4 番目の日付が正しいです。年は最後の年の 1800 年代なので、正しくありません。
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn関連記事 - PHP Date
- PHP で日付に日を追加する方法
- PHP を使用して 2つの日付の差を計算する方法
- PHP で DateTime を文字列に変換する方法
- PHP で文字列を日付と日時に変換する方法
- PHP で 1つの日付形式を別の日付形式に変換する方法
- PHP で現在の日付と現在時刻を取得する方法
