不用正则,使用函数date_parsehttp://cn.php.net/manual/en/function.date-parse.php

解决方案 »

  1.   

    只能写这么细了,
    比如说每月有多少天没有检查,只设置了上限为31天preg_match("/^[1-2][\d]{3}\-(0\d|1[0-2])\-([0-2]\d|3[0-1])$/",    $card_name
      

  2.   

    preg_match("/^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$/",$time);
      

  3.   

    能有别的方法最好用别的方法,其实正则表达式的效率很低的,比那些系统函数效率低多了。不要觉得它很高级。当其他方式不好解决的时候,再考虑正则表达式。而且尤其是这种条件特别多的情况,用正则写的很严谨的话会很长,效率也很低,用date_parse是最好的选择。
      

  4.   

    如果能用一些简易函数代替,就用那个方法,不要动不动就用正则表达式,正则表达式虽然功能很强,但是经常用(用一次都是这样)很浪费资源的,如果你是一个开网站的人,绝对会考虑系统的负载,所以最好用date_parse函数,详细请看http://cn.php.net/manual/zh/function.date-parse.php
      

  5.   

    PHP自带一个验证日期的函数:checkdate()
    验证是否是一个有效的日期!!
      

  6.   

    我一般在网页上用javascript限定输入格式,后台用这个来检查是否是有效的日期。