2011-11-05 101 views
0

我想驗證PHP中的日期格式YYYY-MM-DD。但有些事情是錯的,我找不到它?正則表達式一直告訴我格式是錯誤的,當它是正確的。以日期格式發送正則表達式

$datePattern = '/^(2[0-9][0-9][0-9])\-(0[1-9]|1[0-2]])\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/'; 
$date = '2011-11-05'; 
if(!preg_match($datePattern,$date)){ 
    die('Wrong format in date!'); 
} 

回答

1

你在你的正則表達式有一個額外的](月子表達式)是沒有必要的。所以它應該是

^(2[0-9][0-9][0-9])\-(0[1-9]|1[0-2])\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$ 
+0

是的,這是正確的! – einstein

0

。在你的正則表達式的額外]

'/^(2[0-9][0-9][0-9])\-(0[1-9]|1[0-2]])\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/' 
            ^

放棄它。

而正則表達式不是驗證日期的最佳工具。您應該使用checkdate函數。

1

你可以把它簡化一點:

/^(2[0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[0-1])$/