我的问题很简单但需要工作。我尝试了很多正则表达式来检查我的日期时间是否正常,但是我确信我的正则表达式是正确的,它总是返回给我带有ALERT的isnotok。你能查一下我的代码吗?
validateForLongDateTime('22-03-1981')
function validateForLongDateTime(date){
var regex=new RegExp("/^\d{2}[.-/]\d{2}[.-/]\d{4}$/");
var dateOk=regex.test(date);
if(dateOk){
alert('ok');
}else{
alert('notok');
}
}
答案 0 :(得分:2)
正则表达式至少有两个问题:
.
和/
),这不是必需的。
"固定"正则表达式看起来像:
/^\d{2}[.\/-]\d{2}[.\/-]\d{4}$/
请参阅demo
但是,您无法使用它验证日期,因为它也会与37-67-5734
匹配。
以下是my enahanced version,其中包含分隔符的字符类:
^(?:(?:31([\/.-])(?:0?[13578]|1[02]))\1|(?:(?:29|30)([\/.-])(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29([\/.-])0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])([\/.-])(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
答案 1 :(得分:0)
通过这种方式,您可以验证1到31和1到12月之间的日期
var regex = /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.](19|20)\d\d$/
在此处查看此演示https://regex101.com/r/xP1bD2/1