我需要一个正则表达式来模式匹配以下内容 -
mm/dd/yyyy
以下日期条目应通过验证:
- 2012 年 5 月 3 日
- 2012 年 5 月 3 日
- 2012 年 5 月 3 日
- 2012 年 5 月 3 日
此外,在验证上述regex
之后,将上述日期string
转换为Date
对象的最佳方法是什么?
最佳答案
您应该使用 split、parseInt 和 the Date constructor 一次性完成检查和解析。 :
function toDate(s) {
var t = s.split('/');
try {
if (t.length!=3) return null;
var d = parseInt(t[1],10);
var m = parseInt(t[0],10);
var y = parseInt(t[2],10);
if (d>0 && d<32 && m>0 && m<13) return new Date(y, m-1, d);
} catch (e){}
}
var date = toDate(somestring);
if (date) // ok
else // not ok
01/22/2012 ==> Sun Jan 22 2012 00:00:00 GMT+0100 (CET)
07/5/1972 ==> Wed Jul 05 1972 00:00:00 GMT+0100 (CEST)
999/99/1972 ==> invalid
正如本页的其他答案一样,这对于 2 月的 31 来说不会令人窒息。这就是为什么出于所有严肃的目的,您应该使用像 Datejs 这样的库。 .
关于javascript - 使用正则表达式验证日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12933290/