如何使用正则表达式获取有效的时间范围

时间:2011-06-04 10:19:13

标签: .net regex

如何确保所选日期时间值介于给定时间范围内。 即

2/2/2011 8:10:30 is invalid but
2/2/2011 8:30:00 is a valid date

1 个答案:

答案 0 :(得分:4)

正则表达式匹配字符串,而不是数字或数字范围。因此,您需要考虑所有有效时间/日期的文本表示并进行分析。

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

了解为什么这不是一个好主意?