javascript中的日期时间验证

javascript中的日期时间验证,javascript,regex,Javascript,Regex,我是javascript新手。我正在修复别人编程的错误。我认为javascript中的验证代码如下: function validateTime(str) { var pattern = new RegExp(/^(([0-9])|([0-1][0-9])|([2][0-3])):(([0-9])|([0-5][0-9]))$/); if (pattern.test(str)) { return true; } else { re

我是javascript新手。我正在修复别人编程的错误。我认为javascript中的验证代码如下:

 function validateTime(str) {
    var pattern = new RegExp(/^(([0-9])|([0-1][0-9])|([2][0-3])):(([0-9])|([0-5][0-9]))$/);
    if (pattern.test(str)) {
        return true;
    }
    else {
        return false;
    }
}
但它不验证时间:-22-05-2015


怎么做呢?

您的正则表达式验证的是时间,而不是日期。要检查格式中的日期,请使用以下命令:

var pattern = new RegExp(/^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-(19|20)\d\d$/);
您可以在此处检查此模式:

您可以使用对象的
parse
方法来验证日期字符串。 然后,您可以检查
Date.parse(str)
的值是否等于
“无效日期”
,以查看其格式是否错误。完全不需要正则表达式。

函数解析日期(str){
var m=str.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/);
返回(m)?新日期(m[3],m[2]-1,m[1]):空;

}
不清楚您是否尝试验证日期或时间:主题“DateTIme”,函数名为“validateTime”,文本:“…不验证时间”,例如:“22-05-2015”,这是一个日期。可能是重复的,但可能不是…非常感谢!!工作得很好@阿方索加内特谢谢,我确实省略了那个斜杠,已经把它放回原处了。至于分隔符,我假设OP想要的正是这种格式,当然它可以被增强以捕获更多的格式。@n-dru,没问题,很公平!Prakash,如果您的问题得到解决,您应该选择一个答案。只有当字符串的格式由正在使用的浏览器中的日期函数正确解析时,这才有效。在ES5之前,这完全依赖于实现。现在它应该适用于ISO8601格式的日期,但不一定。OP中的格式将被当前使用的浏览器区别对待。