Dar*_*ine 1 php regex validation date
我有一个验证生日的正则表达式:
if(!preg_match('/^(0?[1-9]|1[012])[- .\/](0?[1-9]|[12][0-9]|3[01])[- .\/](19|20)?[0-9]{2}$/', $_POST['bday'])
{
echo 'enter your birthdate in a valid format. mm/dd/yyy';
}
Run Code Online (Sandbox Code Playgroud)
这是:
正确的月份
闰年日期不准确
2月30日和31日接受
并且20年接受大于2013年
我几个月只做了正确的,我怎样才能做更准确的生日验证?还是有其他方法来验证生日?
我想要的输出是:
验证2月份的闰年日期
年份不得超过2010年
OUTPUT:
02/14/2010
我对正则表达式有点帮助吗?
正则表达式不适合解析日期.PHP已经有内置函数和类来执行此操作,您应该使用它.以下是使用PHP的DateTime类(来自php.net的Glavić函数)的方法:
function validateDate($date, $format = 'm/d/Y')
{
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date && $d->format('Y') <= 2010;
}
Run Code Online (Sandbox Code Playgroud)
例如:
var_dump(validateDate('02/14/2010')); // bool(true)
var_dump(validateDate('02/14/2011')); // bool(false)
Run Code Online (Sandbox Code Playgroud)