我在为某个日期范围生成正则表达式时遇到问题。
例如,此范围[2015-11-17, 2017-10-05],我该怎么办?使用正则表达式验证是否有日期记录在该范围内。

第二个问题是,是否可能有一个通用正则表达式,我可以将其用于多个日期范围,仅用我拥有的新范围替换正则表达式中的几个值,并且该正则表达式会继续验证日期范围,但使用新范围。在此先感谢您的帮助=)

最佳答案

不要使用正则表达式

如评论所述,Regex不适合日期范围或任何时间跨度。正则表达式在仅查看文本语法而不是语义(含义)的意义上是“愚蠢的”。

java.time

使用Java 8和更高版本中内置的java.time框架。

将您的字符串解析为LocalDate对象。

LocalDate start = LocalDate.parse( "2015-11-17" );


通过调用isEqual,isBefore和isAfter方法进行比较。

请注意,我们通常在日期时间工作中使用“半开式”方法,其中开始是包括在内的,而结尾是排除的。

这些问题已在其他有关堆栈溢出的问题和解答中进行了介绍。因此,我在这里简化了我的讨论。

关于java - Java正则表达式验证日期范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35868496/

10-09 07:41
查看更多