2017-06-22 99 views
0

我試圖訪問給定日期值的格式。我需要檢查格式是否在dd/mm/yydd/mm/yyyy。我用preg_match()使用了以下模式,但它們不起作用。如何區分日期格式爲dd/mm/yy或dd/mm/yyyy?

'^\d{1,2}\/\d{1,2}\/\d{4}^' // dd/mm/yyyy 

'^\d{1,2}\/\d{1,2}\/\d{2}^' // dd/mm/yy 

有人能幫我找到正確的模式嗎?

+0

這是由可能已經確定在www.regex101.com測試或做研究的快速位上的正則表達式語法/閱讀SO頁面簡單的印刷錯誤的錯誤。這種模式和被接受的答案充其量只會對日期做一個寬鬆的驗證。換句話說,像'99/99/9999'這樣的無效日期將會毫無問題地匹配。爲了獲得最佳效果,可以使用'checkdate()'或DateTime類函數來驗證日期。 – mickmackusa

+0

注意最好的[本頁回答](https://stackoverflow.com/questions/19271381/correctly-determine-if-date-string-is-a-valid-date-in-that-format)不要使用正則表達式,以及隨着模式指數增長而質量改善的那些正則表達式。使用正則表達式不是檢查日期的最佳工具。 – mickmackusa

回答

1

問題:

$應該是在年底,而不是^$用於字符串的結尾。

2.不要忘記分隔符/

正則表達式:

/^\d{1,2}\/\d{1,2}\/\d{4}$/字符串等10/10/1111

/^\d{1,2}\/\d{1,2}\/\d{2}$/字符串等10/10/11

Try this code snippet here

0

您在正則表達式的語法中有錯誤。在一個正則表達式中,模式的開始用^表示,而結尾用$表示。

您可以使用以下來驗證給定的日期格式。

$date_to_check = "22/06/2017"; 
$true = preg_match("/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/", $date_to_check); 
var_dump($true); 

但是,您不應僅針對正則表達式驗證日期。您需要將Year,month,date傳遞給php的checkdate()函數以真正驗證它。

PHP checkdate() doc

相關問題