如何確保選定的日期時間值介於給定的時間範圍之間。 即如何使用正則表達式獲得有效的時間範圍
2/2/2011 8:10:30 is invalid but
2/2/2011 8:30:00 is a valid date
如何確保選定的日期時間值介於給定的時間範圍之間。 即如何使用正則表達式獲得有效的時間範圍
2/2/2011 8:10:30 is invalid but
2/2/2011 8:30:00 is a valid date
正則表達式匹配字符串,而不是數字或數字範圍。因此,您需要考慮所有有效時間/日期的文本表示並分析它們。
5和11之間的數字因此將是1[01]|[5-9]
等;這可以隨日期變得複雜,特別是如果您需要驗證用戶輸入。然後你的正則表達式需要知道閏年和所有這些 - 所有這些都是possible but nightmarish要維護的。所以,你真的需要考慮一下是否真的是你想要一個正則表達式...
爲8:30:00-13:00:00
你得到(這裏寫成一個詳細的正則表達式)的範圍內:
\b # start of word
(?: # Either match...
13:00:00 # 13:00:00
| # or
(?: # hours:
1[012] # 10-12
| # or
0?9 # 9, optional leading 0
) # end of hours
: # colon
[0-5][0-9] # minutes: 00-59
: # colon
[0-5][0-9] # seconds
| # or
0?8 # hour: (0)8
: # colon
[3-5][0-9] # minutes 30-59
: # colon
[0-5][0-9] # seconds
) # end of alternation.
\b # end of word
明白爲什麼這不是一個好主意?
這真的是一個很好的答案,顯示爲什麼正則表達式不總是很好用,謝謝分享這個! – eFloh 2011-06-04 16:32:58
爲什麼你想要使用正則表達式? – Johnsyweb 2011-06-04 10:23:42
轉換爲日期並使用Date.before()等來測試範圍 – Bohemian 2011-06-04 10:46:38
允許的範圍是什麼,或者我們應該猜測? – 2011-06-04 10:46:55