我有麻烦试图匹配日期模式。任何在以下日期是合法的:模式匹配日期
- 121212
- 4 9 12
- 5-3-2000
- 62502
- 3/3/11
- 09-08-2001
- 8 6 07
- 12 10 2004
- 4-16-08
- 3/7/2005
是什么让这个日期匹配真正具有挑战性的是,今年没有为4个数字(2位数的年份被认为是在21世纪即02 = 2002年),如果月份/日期为一位数月份,则可以用0开始写入月份/日期,并且日期可能会或可能不会被空格,破折号或斜杠分隔。
这是我目前有:
/((((0[13578])|([13578])|(1[02]))[\/-]?\s*(([1-9])|(0[1-9])|([12][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/-]?\s*(([1-9])|(0[1-9])|([12][0-9])|(30)))|((2|02)[\/](([1-9])|(0[1-9])|([12][0-9])))[\/-]?\s*(20[0-9]{2})|([0-9]{2}))/g
这几乎工作,但现在我不能完全肯定,如果我假设的日期和月份的长度。例如,在121212
的情况下,我可能会假定该月是1
而不是12
。此外,由于某些原因,当我打印出$1
和$2
时,它的值相同。在121212
的情况下,$1
是1212
,$2
是1212
和$3
是12
。不过,我只想$1
为121212
。
是年份“00”2000年(技术上是20世纪) – ysth 2013-03-13 02:55:32
有没有问题? – 2013-03-13 03:03:45
对我来说这似乎不可能100%准确:11213可能是1-12-13或11-2-13。两者都是有效的日期。 – uptownnickbrown 2013-03-13 03:06:31