2015-05-18 68 views
-2

我是JavaScript新手。我正在修复其他人编写的错误。我看到的验证码在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

如何能不能做到?

+0

目前还不清楚您是否正在验证日期或时间:主题“* DateTIme *”,名为“* validateTime *”的函数,文本:“* ...不验证时间*”,例如:“* 22 -05-2015 *“,这是一个日期。 – RobG

+1

可能是[*如何验证日期?]的副本(http://stackoverflow.com/questions/5812220/how-to-validate-a-date),但也许不是... – RobG

回答

1

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

var pattern = new RegExp(/^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-(19|20)\d\d$/); 

你可以在这里检查此模式:

https://regex101.com/r/kB5nV2/1

+0

非常感谢!工作完美! –

+1

@AlfonsoGarnett谢谢,的确,我省略了这个斜线,已经把它放回原位。至于分隔符,我假设OP需要这种格式,确保它可以被增强以捕获更多格式。 –

+1

@ n-dru,没问题,够公平!普拉卡什,如果你的问题解决了,你应该选择一个答案。 –

1

可以使用Date对象的parse的方法来验证一个日期字符串。 然后,您可以检查Date.parse(str)的值是否等于"Invalid Date"以查看它是否格式错误。根本不需要正则表达式。

+1

只有当字符串的格式被正在使用的浏览器中的Date函数正确解析时才有效。在ES5之前,这完全取决于实施。现在它**应该**适用于ISO 8601格式日期,但不一定。 OP中的格式将被当前使用的浏览器区别对待。 – RobG

0

function parseDate(str) { 
 
    var m = str.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/); 
 
    return (m) ? new Date(m[3], m[2]-1, m[1]) : null; 
 
}

功能validateTime(STR)代码中使用的是时间的验证。日期验证请尝试使用parseDate(str)