如何使用RegEx选择日期范围

时间:2012-08-19 01:14:58

标签: regex

我的日期字符串看起来像这样:

20120817110329

如您所见,格式为:YYYYMMDDHHMMSS

如何选择(使用RegEx)7/15和8/20之间的日期?或者8/1到8/15呢?

如果我想选择一个不涉及多个地方的范围,我有这个工作,但它非常有限:

^2012081[0-7] //selects 8/10 to 8/17

更新

永远不要忘记明显(如下面的Wiseguy所指出的),人们可以简单地寻找201207150000和201208209999之间的范围。

2 个答案:

答案 0 :(得分:3)

由于您只是查询包含这些值的数据库字段,因此您只需检查201207150000201208209999之间的值。


如果你仍然想要正则表达式,它并不漂亮,但这样做:

^20120(7(1[5-9]|2\d|3[01])|8([0-1]\d|20))\d{4}$

reFiddle example

您基本上必须手动考虑每个可能的范围。

^20120
(
7
  (
    1[5-9]
   |2\d
   |3[01]
  )
 |
8
  (
    [0-1]\d
   |20
  )
)
\d{4}$

答案 1 :(得分:0)

我认为这应该有效:

^2012(07(1[5-9]|[2-3][0-9])|08([0-1][0-9]|20))

虽然其他答案非常相似...... 您可以查看this了解详情。