java - 使用 Java 正则表达式验证长字符串中的日期

标签 java regex date

我正在尝试编写一个 Java 例程,它可以从长字符串中解析出日期,即给定字符串:

"Please have the report to me by 6/15, because the shipment comes in on 6/18" 

正则表达式会找到 6/15 和 6/18。我查看过 Stack Overflow 和其他地方,大多数日期正则表达式的示例只是验证给定字符串是否是日期,而不是在大量文本中查找日期。理想情况下,我想要一个正则表达式,它可以识别人们用数字书写日期的所有主要方式,即 6/156/15/1206/15/1215/6/1215/06/12,尽管也许最好将它们分成不同的正则表达式,以便克拉。我是正则表达式的新手(我两天前才开始学习它们),并且正则表达式对我来说仍然有点神秘,所以我希望对任何正则表达式建议进行详细解释。

最佳答案

如果您不介意范围检查,这就足够了:

(\d{1,2})/(\d{1,2})(?:/(\d{4}|\d{2}))?

要检查您是否无法执行 2/29/2001 但可以执行 2/29/2000,您确实希望在正则表达式完成后执行此操作这是它的工作,否则你就会被送进精神病院。

编辑:更好的是,隔离世纪,并防止像 2/193 这样的事情(由 Alex 的问题提示,尽管这是一个单独的问题):

\b(\d{1,2})/(\d{1,2})(?:/(\d{2})?(\d{2}))?\b

每场比赛您将获得 4 次捕获:[月、日、世纪、年],其中 世纪 可以是空。

关于java - 使用 Java 正则表达式验证长字符串中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088530/

相关文章:

java - 如何确定电子表格单元格是否包含日期或实数?

java - 从geoserver获取 map 到argis sdk android

javascript - javascript中的正则表达式忽略换行符

java - Android:DatePicker - 跟踪更改日期

c - 后面没有数字或空格+数字的匹配词

regex - 如何在正则表达式中包含对象

javascript - Momentjs UTC 时间很奇怪

java - 为什么从 main 方法访问 Enum 时会出现编译错误?

java - SwingWorker 上的异常不可捕获

java - ScalaFX/JavaFX : How can I change the overrun style of a ComboBox?