使用正则表达式来验证日期

时间:2012-08-07 17:54:49

标签: regex

我发现的所有示例都在检查字符串是否遵循某种模式并且是否为数字,例如"\d{4}-\d{2}-\d{2}"。我想检查日期是否晚于给定日期,例如,检查日期是否遵循模式“yyyy-mm-dd”并且晚于“2009-03-01”。如何实现?

3 个答案:

答案 0 :(得分:5)

不要使用正则表达式。这就像试图用锯子钉在钉子上一样。

使用解析您的语言的任何日期,并使用它来执行检查。

如果您需要从字符串中提取日期以便执行此操作,请务必使用正则表达式,但仅限于该部分。

答案 1 :(得分:0)

答案 2 :(得分:0)

我绝对同意塞巴斯蒂安的回答,即正则表达式不是正确的工具。这里所说的是我认为可行的正则表达式:

2009-(?:03-(?:0[2-9]|[1-9]\d)|(?:0[4-9]|1\d)-\d\d)|(?:20[1-9]\d|2[1-9]\d\d|[3-9]\d{3})-\d\d-\d\d

这只是为了向您展示为这样的问题阅读正则表达式解决方案是多么困难,您最好使用正则表达式提取日期,然后使用语言工具将其与目标日期进行比较。