欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

验证日期 有大用

shiping1 的头像
<?php
/**
 * 下面是两个正则表达式来验证日期
 */


 $ymd=$_REQUEST['ymd'];
 echo "ymd=".$ymd."<br>";
 
  //第四个表达式是非严格验证,允许写1月,写1日.
 
 //下面这个是验证时间的正则表达式...
//不过要写01月,日要写01日.永远正确的yyyy-mm-dd  (1600-02-29,没有考虑进去)
if(ereg("^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$",$ymd))
{
    echo "第一个验证是对的年月日";    
}
 else
 {
     echo "第一个验证是错的年月日";
 }
 echo "<br>";
 //下面这个是验证时间的正则表达式...
//不过也要写01月,日也要写01日.永远正确的yyyy-mm-dd   (1600-02-29,考虑进去)
if(ereg("^(((((0[48]00)|(0[1-9]((0[48])|([2468][048])|([13579][26]))))-02-29)|((0[1-9][0-9][0-9])-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8])))))))|((((((([13579][26])|([2468][048]))00)|([1-9][0-9]((0[48])|([13579][26])|([2468][048]))))-02-29)|(([1-9][0-9][0-9][0-9])-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8])))))))|((((00((0[48])|([2468][048])|([13579][26])))-02-29)|((00((0[1-9])|([1-9][0-9])))-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8])))))))$",$ymd))
{
    echo "第二个验证是对的年月日";
}
else
{
    echo "第二个验证是错的年月日";
}
 echo "<br>";
 //下面这个是验证时间的正则表达式...
//不过也要写01月,日也要写01日.永远正确的yyyy-mm-dd  (1600-02-29,考虑进去)
if(ereg("^((((((0[48])|([13579][26])|([2468][048]))00)|([0-9][0-9]((0[48])|([13579][26])|([2468][048]))))-02-29)|(((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9][0-9])|([1-9][0-9][0-9][0-9]))-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8]))))))$",$ymd))
{
    echo "第 三个验证是对的年月日";
}
else
{
    echo "第三个验证是错的年月日";
}
 echo "<br>";
 

          
  //if(ereg("^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0?[13578]|1[02])-(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)-(0?[1-9]|[12][0-9]|30))|(0?2-(0?[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-0?2-29)$",$ymd))
//if(ereg("^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0?[13578]|1[02])-(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)-(0?[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$",$ymd)) )

 
  //花了好长的时间来做这个验证时间的正则表达式(yyy-mm--dd).
  //经测,完全正确.是个完美的证时间的正则表达式.
  //下面这个可以是 允许写1月,写1日. 也可以为 01月 01日
//测平年的正则表达式(1600-02-29,没有考虑进去)
if(ereg("^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0?[13578]|1[02])-(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)-(0?[1-9]|[12][0-9]|30))|(0?2-(0?[1-9]|[1][0-9]|2[0-8]))))$" ,$ymd) )                                                                                                 
{
    echo "第四个验证是对的年月日";
}//测闰年的正则表达式
else if(ereg("^((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-0?2-29)$",$ymd))
{
    echo "第四个验证是对的年月日";
    
}
else
{
    echo "第四个验证是错的年月日";
}
 echo "<br>";




 












  //正则表达式是不能轻易回车的,一轻易回车,就麻烦了,就不是原来的正则表达式.这个我不懂.
  //这个第三个就是与第二个相比,就是多一个回车键,所以就不是正确的正则表达式.
 
     //错误的正则表达式
    
 
 //错误的正则表达式
     
 
 
?>
普通分类: