我試圖訪問給定日期值的格式。我需要檢查格式是否在dd/mm/yy
或dd/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
有人能幫我找到正確的模式嗎?
我試圖訪問給定日期值的格式。我需要檢查格式是否在dd/mm/yy
或dd/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
有人能幫我找到正確的模式嗎?
問題:
這
$
應該是在年底,而不是^
。$
用於字符串的結尾。2.不要忘記分隔符
/
。
正則表達式:
/^\d{1,2}\/\d{1,2}\/\d{4}$/
字符串等10/10/1111
/^\d{1,2}\/\d{1,2}\/\d{2}$/
字符串等10/10/11
您在正則表達式的語法中有錯誤。在一個正則表達式中,模式的開始用^表示,而結尾用$表示。
您可以使用以下來驗證給定的日期格式。
$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()函數以真正驗證它。
這是由可能已經確定在www.regex101.com測試或做研究的快速位上的正則表達式語法/閱讀SO頁面簡單的印刷錯誤的錯誤。這種模式和被接受的答案充其量只會對日期做一個寬鬆的驗證。換句話說,像'99/99/9999'這樣的無效日期將會毫無問題地匹配。爲了獲得最佳效果,可以使用'checkdate()'或DateTime類函數來驗證日期。 – mickmackusa
注意最好的[本頁回答](https://stackoverflow.com/questions/19271381/correctly-determine-if-date-string-is-a-valid-date-in-that-format)不要使用正則表達式,以及隨着模式指數增長而質量改善的那些正則表達式。使用正則表達式不是檢查日期的最佳工具。 – mickmackusa