如何用正则表达式判断yyyy-mm-dd

我这样写为什么不行?谁能给我解释下这句判断年月日的表达式是什么意思

<script language="javascript">
function check(){
var user=document.form1.txt.value
var pattern=/^[1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9]$/;
if(pattern.test(user))
{
alert("日期输入有误");
return false;
}
}
</script>
</head>

<body>
<form name="form1" method="post" action="" onSubmit="return check()">
<label>
<input type="text" name="txt" >
</label>
<p>
<label>
<input type="submit" name="Submit" value="提交" >
</label>
</p>
</form>

这个程序的正则表达式是有问题的,比如 2009-12-33 也会被认为是合法。

正确的正则表达式(包括测试代码):

var str = '2009-12-33';
if(str.match(/^((?:19|20)\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/)) {
alert('是日期');
} else {
alert('不是日期');
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2021-03-03
/^[1-2]{1}([0-9]{3})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/
第2个回答  2009-12-17
/^[1-2]{1}([0-9]{3})-([0-1]{1})([0-9]{1})-(([0-2]){1}([0-9]{1})|([3]{1}[0-1]{1}))$/
相似回答