以前写了几个日期格式的验证,但是都不太完美。在网上搜了一下,并测试了这个用正则表达式的验证,非常完美其,而且还有瑞年判断。(代码并非本人所写) 1、用正则表达式验证日期格式(C#) /**//// <summary> /// 验证日期格式 /// </summary> /// <param name="dtime">日期字符串</param> /// <returns>bool</returns> public static bool IsDateTime(string dtime) ...{ bool flag = true; string strMode = @"^((d{2}(([02468][048])|([13579][26]))[-/s]? ((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))| (((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|(30)))| (0?2[-/s]?((0?[1-9])|([1-2][0-9])))))|(d{2}(([02468][1235679])| ([13579][01345789]))[-/s]?((((0?[13578])|(1[02]))[-/s]?((0?[1-9])| ([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])| (30)))|(0?2[-/s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"; Regex dt = new Regex(strMode,RegexOptions.Compiled); Match m = dt.Match(dtime); if(!m.Success) ...{ flag = false; } return flag; } 2、JavaScript 实现的日期格式验证 <script language="javascript" type="text/javascript"> function ChkBirthday(sender, args) ...{ var check=/^([1-2]d...{3})-(0?[1-9]|11|12|10)-([1-2]?[0-9]|0[1-9]|30|31)$/; if(Form1.Birthday.value!="") if (!check.exec(Form1.Birthday.value)) ...{ args.IsValid = false; } else ...{ var y=(Form1.Birthday.value).split("-")[0]; var m=(Form1.Birthday.value).split("-")[1]; var d=(Form1.Birthday.value).split("-")[2]; if(m==1||m==3||m==5||m==7||m==8||m==10|m==12) ...{ if(d<0||d>31) ...{ args.IsValid = false; } else ...{ args.IsValid = true; } } else ...{ if(m==2) //平月 ...{ if(y%400==0||(y%4==0&&y%100!=0)) //闰年 ...{ if(d<1||d>29) ...{args.IsValid = false;} else ...{args.IsValid = true;} } else //平年 ...{ if(d<1||d>28) ...{args.IsValid = false;} else ...{args.IsValid = true;} } } else //小月 ...{ if(d<1||d>30) ...{args.IsValid = false;} else ...{args.IsValid = true;} } } } } // --> </script>