日期:2014-05-16  浏览次数:20366 次

验证日期时的问题
^[1-2][0-9][0-9][0-9]-(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[0-1])$

这是我写的正则代码,当我输入 "2009-03-01 "的时候可以通过,但是我输入 "2009-01-01 "的时候就报错,请问是什么问题啊?

------解决方案--------------------
用你的正则代码,测试 "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])$/;
------解决方案--------------------
<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>
------解决方案--------------------
还是 muxrwc(生命曾可贵,信念价更高,学习要努力,追猫永不弃。) 的方法好!

学习!