<?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>";
//正则表达式是不能轻易回车的,一轻易回车,就麻烦了,就不是原来的正则表达式.这个我不懂.
//这个第三个就是与第二个相比,就是多一个回车键,所以就不是正确的正则表达式.
//错误的正则表达式
//错误的正则表达式
?>