要求如下
yyyy-mm-dd     √
yyyy-m-d          √
yyyy-m-dd        √
yyyy-mm-d       √OVER
无其它要求,明白?
有段代码供参考和修改,猪个位程序猿大叔截日快了!
<script language="javascript"> 
function check(){
var a = /^(\d{4})-(\d{2})-(\d{2})$/
if (!a.test(document.getElementById("TextBox1").value)) { 
alert("日期格式不正确!") 
return false 

else 
return true 

</script> 
javascript日期

解决方案 »

  1.   


    var isValidDate = function (value, userFormat) {
      var  userFormat = userFormat || 'mm/dd/yyyy', // default format  delimiter = /[^mdy]/.exec(userFormat)[0],
      theFormat = userFormat.split(delimiter),
      theDate = value.split(delimiter),  isDate = function (date, format) {
        var m, d, y
        for (var i = 0, len = format.length; i < len; i++) {
          if (/m/.test(format[i])) m = date[i]
          if (/d/.test(format[i])) d = date[i]
          if (/y/.test(format[i])) y = date[i]
        }
        return (
          m > 0 && m < 13 &&
          y && y.length === 4 &&
          d > 0 && d <= (new Date(y, m, 0)).getDate()
        )
      }  return isDate(theDate, theFormat)}
      

  2.   

    ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
    以上正则年份0001-9999,格式yyyy-MM-dd。考虑月份、对应的天数,及平年闰年
    详细参考:日期正则表达式
      

  3.   

    isValidDate('09/9/2009')
    isValidDate('09/9/2009')
    isValidDate('9/9/2009')
      

  4.   

    默认格式自己调整下 'mm/dd/yyyy'
      

  5.   

    我输入2015-5-5报了个错呵呵,我给你个牛的~~((^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(0?2)([-\/\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([3579][26]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][13579][26])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][13579][26])([-\/\._])(0?2)([-\/\._])(29)$))
      

  6.   

    以上实现的是yyyy-MM-dd格式的日期验证,考虑到连字符的不同,以及月和日可能为M和d,即yyyy-M-d的格式,可以对以上正则进行扩展^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])([-/.]?)(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])([-/.]?)(?:29|30)|(?:0?[13578]|1[02])([-/.]?)31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2([-/.]?)29)$使用反向引用进行简化,年份0001-9999,格式yyyy-MM-dd或yyyy-M-d,连字符可以没有或是“-”、“/”、“.”之一。^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\2(?:29))$这就是“年月日”这种形式最全的一个正则了,不同含义部分以不同颜色标识,可以根据自己的需要进行栽剪。