我有麻煩試圖匹配日期模式。任何在以下日期是合法的:模式匹配日期
- 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