绕弯路了把,把用户输入的时间格式用js做限定,然后传到php页面转化为时间戳!再来比较!比如用户输入了1980-01-10 那么传到php页面的话这么写(仅供思路参考)
//...............你自己的代码
$birthTime = strtotime($_POST['birthTime']);//将用户输入的日期转化为时间戳
$startTime = strtotime('1985-01-01');//开始日期的时间戳
$endTime = strtotime('1995-12-31');//结束日期的时间戳
if($birthTime>=$startTime && $birthTime<=$endTime){
echo '日起输入是对的';
}else{
echo '日期非法';
}
?>
为什么一定要用php正则表达式呢?php可以嵌套在html中嘛,你直接用html中的表单验证,用javascript或者jQuery都可以的,网上有很多的
^((1988|1992)\.2\.29)|(198[5-9]|199[0-5])\.(((11|12|\d)\.(\d|1\d|2[0-8]))|((1|3|5|7|8|10|12)\.(29|3[0-1]))|((2|4|6|9|11)\.(29|30)))$
不知道有没有算错 1988和1992是闰年吗 如果是的话那2月就是29天
其他的每个月通用的是 28天都有的
然后小月到30
大月到31
日期格式 年.月.日
搞定
这个正则的话有点复杂,可以换个思路嘛。
1)checkdate()来检验日期是否有效,比如输入个1999.33.33;
2)再检测范围,可以用strtotime()来比较;
这个为什么一定要用正则呢,而且这样子效率也不过,还不如直接使用PHP或者JS的时间对象来解决问题,还更简单。