js 写 验证日期正则表达式

按照 这样的验证格式写 年-月-日 例如 1987-09-01
js里正则表达式怎么写啊?
如果这样写的话 排除不了 1987-88-99这种情况的...

如果单纯用正则的话,去掉第一个/和最后的/ig

简单的日期格式验证:

/^([1-2]\d{3})[\/|\-](0?[1-9]|10|11|12)[\/|\-]([1-2]?[0-9]|0[1-9]|30|31)$/ig

下面的正则式不仅仅匹配了日期格式,而且对日期的逻辑做了严格要求,判断了大月31天,小月30天,2月28,闰年情况2月29天

/((^((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)$))/ig
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-22
经我使用,满意答案里长长那一个表达式有误,比如2013-03-28匹配不通过,下面这个暂时未发现有误:
/(([09]{3}[19]|[09]{2}[19][09]{1}|[09]{1}[19][09]{2}|[19][09]{3})(((0[13578]|1[02])(0[19]|[12][09]|3[01]))|((0[469]|11)(0[19]|[12][09]|30))|(02(0[19]|[1][09]|2[08]))))|((([09]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)/
第2个回答  2010-07-29
<script language="javascript" type="text/javascript">
function tex(){
var str="1987-09-01";
var reg =/\d{4}-\d{2}-\d{2}/ ;
if (reg.test(str))
{
alert ("恭喜帐户通过验证!")
}
else
{
alert("验证失败!");
}
}
tex();
</script>

</html>
第3个回答  2010-07-29
\d{4}-\d{2}-\d{2}
相似回答