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 で現在の日付と現在時刻を取得する方法