日期以JavaScriptJavaScript中的任何格式的日期正则表达式?
该格式包括任何格式的正则表达式:DD/MM/yyyy或毫米/日/年或yyyy /日/或DD-YY-MMMM或DDMMYYYY像等等... ..
可以任何一个帮助吗?
日期以JavaScriptJavaScript中的任何格式的日期正则表达式?
该格式包括任何格式的正则表达式:DD/MM/yyyy或毫米/日/年或yyyy /日/或DD-YY-MMMM或DDMMYYYY像等等... ..
可以任何一个帮助吗?
没有“完美”的解析,但我建议使用类似于datejs的东西来处理JavaScript中的日期。它可以处理许多具有各种格式支持的解析例程。
Reg Ex适用于闰年考虑的日期。为as3编写了它,但由于js和as3都是ECMAScript的衍生物,它在JS中也应该可以正常工作。
用你想要的日期分隔符在reg ex中更改#。对于一个全球性的分离器替换#(/ | - |。)
对于DD-MM-YYYY格式
^(?:31#(?:(?:0[13578])|(?:1[02]))#)|(?:(?:29|30)#(?:(?:0[1,3-9])|(?:1[0-2]))#)(?:(?:1[6-9]|[2-9]\d)\d{2})$|^(?:29#02#(?:(?:(?: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]))#(?:(?:1[6-9]|[2-9]\d)\d{2})$
对于MM-DD-YYYY格式
^(?:(?:(?:0?[13578]|1[02])#31)\1|(?:(?:0?[1,3-9]|1[0-2])#(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2#29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))#(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
测试与性能。
29-02-2000 ---> true
millis 2
29-02-2006 ---> false
millis 0
29-02-2001 ---> false
millis 0
30-02-2000 ---> false
millis 0
31-11-2000 ---> false
millis 0
29-13-2000 ---> false
millis 0
31-11-2000 ---> false
millis 0
31-07-2000 ---> true
millis 0
31-08-2000 ---> true
millis 1
31-12-2000 ---> true
millis 0
30-11-2011 ---> true
millis 0
17-07-2011 ---> true
millis 0
04-10-1987 ---> true
millis 0
01-01-1900 ---> true
millis 0
24-05-88 ---> false
millis 0
24-05-88 ---> false
millis 0
29-12-2011 ---> true
millis 0
31-12-2000 ---> true
millis 0
1-1-2010 ---> false
millis 0
1-1-99 ---> false
millis 0
1-01-99 ---> false
millis 0
01-1-99 ---> false
millis 0
对于各种格式,请修改日期分隔符以注册并排序。
http://www.regular-expressions.info/dates.html –
正则表达式对于这类事情是非常不合适的。规则太多(1到31,除非下一个块是这些数字中的一个,在这种情况下它是30,除非它是2,在这种情况下它是28,除了在闰年等)。使用适当的日期解析库。 – Quentin
什么样的日期是dd-yy-mmmm?! – Quentin