在 PHP 中建立 MM/DD/YYYY 日期正規表示式

Subodh Poudel 2022年5月14日
在 PHP 中建立 MM/DD/YYYY 日期正規表示式

本教程將演示在 PHP 中為 mm/dd/yyyy 日期格式建立正規表示式的方法。

在 PHP 中建立 MM/DD/YY 日期正規表示式

我們可以使用正規表示式根據表示式中應用的規則來驗證使用者輸入。我們可以使用正規表示式驗證任何輸入,我們甚至可以使用正規表示式驗證 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 的格式表示。因此,月份的第一個數字可以是 01,所以我們寫 0[1-9] 表示從 01-09 開始的月份。括號內的 1-9 表示寫在 0 之後的數字。

同樣,我們只能寫 101112 表示月份,從 1 開始。因此,我們在 1 的括號內寫了 0121[012]

我們使用|符號來實現邏輯 OR。所以我們用它來分隔規則為 (0[1-9]|1[012])

最後,我們用括號將模式括起來以指示部分的結束。

接下來,我們必須以 mm/dd/yyyy 格式設定分隔符規則。上面的模式允許分隔符 -/.

現在,我們寫了幾天的模式。天數是 1-30,所以天數 01-09 可以寫成 0[1-9]10-29 可以寫成 12[0-9],以及天數 30-31 可以寫成 3[01]

我們對日期之後的分隔符使用相同的規則,格式為 mm/dd/yyyy

我們將 19|20 寫為年份的前兩位數字,這意味著年份只能從 1920 開始。我們在 19|20 之後使用模式\d\d 來表示 1920 之後的任何兩位數字。

這就是上述正規表示式的工作原理。我們現在可以使用上面的正規表示式檢查一些測試日期格式。

為此,建立一個變數 $reg 並將我們上面寫的正規表示式儲存在其中。接下來,建立一個陣列 $dates 並儲存這些隨機日期格式。

['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

第三個是不正確的,因為我們沒有指定 \ 分隔符。我們已經指定了 - 分隔符,所以第四個日期是正確的。年份是最後一年的 1800s,所以它是不正確的。

作者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

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 Regex