PHP使用正则表达式验证日期格式

时间:2012-03-28 09:44:21

标签: php

当用户在文本框中输入日期时,我要检查它是否为yyyy-mm-dd格式。

注意即使是月份,日期,例如:2012-02-32也无效,因为日期只能到31,月份相同,他不能输入13作为月份。

如果格式错误,我应该回复。

提前致谢!

5 个答案:

答案 0 :(得分:1)

试试这个

list($year,$month,$day) = explode('-', $input);
if (checkdate($month, $day, $year)) {
    // Correct
} else {
    // Incorrect
}

答案 1 :(得分:1)

阅读http://php.net/manual/en/function.checkdate.php上的评论非常有用,包括通过正则表达式进行验证。

我使用该页面中的以下代码:

function checkDateTime($data) {
    if (date('Y-m-d', strtotime($data)) == $data) {
        return true;
    } else {
        return false;
    }
}

另外,我建议您添加JavaScript datepicker http://jqueryui.com/demos/datepicker/

答案 2 :(得分:0)

答案 3 :(得分:0)

$e = explode('-', '2012-02-32');
if (checkdate($e[1], $e[2], $e[0])){
    // Valid
}else{
    // Invalid
}

http://php.net/manual/en/function.checkdate.php

答案 4 :(得分:0)

您不应该使用正则表达式。更好(可能不是最好的)是使用checkdate();

$parts = explode('-', $input);
if (sizeof($parts) == 3 && checkdate($parts[1], $parts[2], $parts[0])) {
    // Correct
} else {
    // Incorrect
}