有人能告訴我我的方式錯誤,當談到這個正則表達式:正則表達式幫助日期驗證 - DD/MM/YYYY - PHP
if(preg_match("/^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$/", $_POST["date"]) === 0) {
echo 'error';
}
基本上,我想這顯示錯誤消息每次 - 除非格式正確(dd/mm/yyyy)。
我在做什麼錯誤與上述?
非常感謝任何指針。
- 更新上述正則表達式發佈後不久 - 歉意不便 -
有人能告訴我我的方式錯誤,當談到這個正則表達式:正則表達式幫助日期驗證 - DD/MM/YYYY - PHP
if(preg_match("/^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$/", $_POST["date"]) === 0) {
echo 'error';
}
基本上,我想這顯示錯誤消息每次 - 除非格式正確(dd/mm/yyyy)。
我在做什麼錯誤與上述?
非常感謝任何指針。
- 更新上述正則表達式發佈後不久 - 歉意不便 -
我想你應該還有反斜槓/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/
非常感謝。我會馬上打勾:) – michaelmcgurk 2012-02-15 12:39:17
謝謝。這項工作也適用於我。投票給你。 – 2017-12-05 17:09:49
需要,因爲你正在使用它作爲正則表達式定界符逃脫斜線
/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/
,或者使用不同的正則表達式定界符
#^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$#
太棒了。現在完美地工作。傻我:) – michaelmcgurk 2012-02-15 12:38:51
您也可以使用這一個:
([0-2]\d|3[0-1])\/(0\d|1[0-2])\/(19|20)\d{2}
如果你想日期和月份之間的區別
,也驗證只有2世紀。
如果你需要捕獲'^([0-2] \ d | 3 [0-1])\ /(0 \ d | 1 [0-2])\ /((??19 | 20)\ d {2})$'並且還添加了開始和結束錨點。此外還有一個錯誤,日期爲零的日期和月份將工作'00/00/1999'。 – 2016-11-02 07:28:28
我用這個檢查日期
private function validate_date($date, $empty_allowed = true) {
if (empty($date)) {
return $empty_allowed;
}
if (! strpos($date, '/')) {
return false;
}
if (substr_count($date, '/') !== 2) {
return false;
}
if (preg_match('/(0[1-9]|1[0-9]|3[01])\/(0[1-9]|1[012])\/(2[0-9][0-9][0-9]|1[6-9][0-9][0-9])/', $date) !== 1) {
return false;
}
$split = explode('/', $date);
return checkdate($split[1], $split[0], $split[2]);
}
使用在線正則表達式測試儀前。 http://www.regexpal.com/ – betontalpfa 2017-02-01 16:56:41