Javascript 用于日期验证的正则表达式

Javascript 用于日期验证的正则表达式,javascript,regex,Javascript,Regex,我在验证日期时遇到问题,在我的代码中,我使用了一个正则表达式,它接受2012年的日期,如果我给出的日期为2013年,它会显示“无效日期”。请在这方面帮助我。它可以接受任何年份。。我的意思是有效期至少从2000年到3000年。 提前谢谢 function checkDates(){ var sdate = "2013-01-02"; var edate = "2013-01-02"; if (!isValidDate(sdate)) { alert("Report

我在验证日期时遇到问题,在我的代码中,我使用了一个正则表达式,它接受2012年的日期,如果我给出的日期为2013年,它会显示“无效日期”。请在这方面帮助我。它可以接受任何年份。。我的意思是有效期至少从2000年到3000年。 提前谢谢

function checkDates(){
  var sdate = "2013-01-02";
  var edate = "2013-01-02";

  if (!isValidDate(sdate)) {
         alert("Report Start Date is Invalid!!");
         return false;
    } 

    if (!isValidDate(edate)) {
     alert("Report End Date is Invalid!!");
     return false;
   }
   return true;
}


function isValidDate(sText) {

    var reDate = /(?:([0-9]{4}) [ -](0[1-9]|[12][0-9]|3[01])[ -]0[1-9]|1[012])/;  // yy/mm/dd
    return reDate.test(sText);
}

您的正则表达式中有一个额外的空格和缺少的括号(括号问题使其接受
2012 aa xx
date:

/(?:([0-9]{4}) [ -](0[1-9]|[12][0-9]|3[01])[ -]0[1-9]|1[012])/
              ^                               ^
-------------/-------------------------------/
因此:


下面的表达式也适用

/(?:19|20\d{2})\-(?:0[1-9]|1[0-2])\-(?:0[1-9]|[12][0-9]|3[01])/
谢谢,
Dhiraj

用正则表达式正确验证日期不是几乎不可能吗?你如何决定2月有28天还是29天?是的,…括号会产生问题..谢谢你纠正我。这个表达式很有效!!!@oleq:谢谢
/(?:19|20\d{2})\-(?:0[1-9]|1[0-2])\-(?:0[1-9]|[12][0-9]|3[01])/