^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$

解决方案 »

  1.   

    \d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}
    一般用上面这个应该就能验证了.
    当然更严格地如判断2009-13-05这种13月的错误,那就需要进一步完善了.
      

  2.   

    头上加using System.Text.RegularExpressions;string str = TextBox1.Text.ToString();
            string pat =@"^\d{4}(?<cc>[-/.])((1[0-2])|(0?\d))\k<cc>(([12]\d)|(3[01])|(0?\d)) (([0-1]\d)|(2[0-3]))(:[0-5]\d){2}$";
           if (Regex.IsMatch(str, pat))
            {
                Response.Write("yes");
            }
            else
            {
                Response.Write("no");
            }vs2008测试通过
    bug:不能判断2月30这种不存在的日期~