用你的正则代码,测试"2009-03-01","2009-01-01"都可以通过。
不过你的表达式还是有问题,应该写作:
var a=/^[1-2][0-9][0-9][0-9]-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[0-1])$/;

解决方案 »

  1.   

    <script type="text/javascript">
    var p = /^[1-2][0-9][0-9][0-9]-(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[0-1])$/;
    alert(p.test("2009-03-01") && p.test("2009-01-01"));
    //这个验证这两个没有错的说,不过推荐使用isDate方法
    var isDate = function (a, b, c) {
    var a = parseInt(a), b = parseInt(b), c = parseInt(c), date = new Date(a, -- b, c);
    return (a == date.getFullYear() &&  b == date.getMonth() && c == date.getDate());
    };
    alert(isDate.apply(null, "2009-03-01".split("-")) && isDate.apply(null, "2009-02-01".split("-")));
    </script>
      

  2.   

    还是 muxrwc(生命曾可贵,信念价更高,学习要努力,追猫永不弃。)  的方法好!学习!