var reDate=/(?:19|20\d{2})\-(?:0[1-9]|1[0-2])\-(?:0[1-9]|[12][0-9]|3[01])/;
if ( !reDate.test("2008-08-09" ))//(?:19|20\d{2})其实这里它写错了,导致凡是输入1999这样小于2000年的都会错误,只能验证19……2000以上的没问题
    alert("日期格式错误!");
else
    alert("正确");

解决方案 »

  1.   


    var reDate=/(?:19\d{2}|20\d{2})\-(?:0?[1-9]|1[0-2])\-(?:0?[1-9]|[12][0-9]|3[01])/;
    if ( !reDate.test("1998-8-09" ))//1999-8-8,1999-08-08,2000-10-10,2000-09-9都可以
        alert("日期格式错误!");
    else
        alert("正确");
      

  2.   

    谢谢 ,如果我不希望这种日期格式通过 1998-8-09,只希望 1998-8-9通过该如何写呢?我修改一下了,把?:0 改为?:
    var reDate=/(?:19\d{2}|20\d{2})\-(?:[1-9]|1[0-2])\-(?:[1-9]|[12][0-9]|3[01])/;
    if ( !reDate.test("" ))//1999-8-8,1999-08-08,2000-10-10,2000-09-9都可以
        alert("日期格式错误!");
    else
        alert("正确");
    但是 :1998-8-9  1998-8-49 都给通过了,不知错在那里