Java中的正则表达式日期格式验证

78

我在想是否有一种方法(可能是用正则表达式),可以验证Java桌面应用程序中输入的内容是否为格式为“YYYY-MM-DD”的字符串。


6
您是否希望允许任何年份,以及月份和日期的无效数字?例如9999-99-99?对于无效日期如2009-02-29呢? - Tim Pietzcker
相关问题,仅限正则表达式:https://dev59.com/2moy5IYBdhLWcg3wScLb - McKay
12个回答

1

为了更好的控制,请考虑使用InputVerifier,并使用Steve B.建议的SimpleDateFormat("YYYY-MM-dd")


0
如果你想要一个简单的正则表达式,那么它可能不够准确。 https://www.freeformatter.com/java-regex-tester.html#ad-output 提供了一个测试 Java 正则表达式的工具。此外,在底部你可以找到一些建议的正则表达式来验证日期。
ISO 日期格式(yyyy-mm-dd):
^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$

使用分隔符“-”、“/”、“.”或“ ”的ISO日期格式(yyyy-mm-dd)。强制在日期中使用相同的分隔符。

^[0-9]{4}([- /.])(((0[13578]|(10|12))\1(0[1-9]|[1-2][0-9]|3[0-1]))|(02\1(0[1-9]|[1-2][0-9]))|((0[469]|11)\1(0[1-9]|[1-2][0-9]|30)))$

美国日期格式(月/日/年)

^(((0[13578]|(10|12))/(0[1-9]|[1-2][0-9]|3[0-1]))|(02/(0[1-9]|[1-2][0-9]))|((0[469]|11)/(0[1-9]|[1-2][0-9]|30)))/[0-9]{4}$

小时和分钟,24小时格式(HH:MM):

^(20|21|22|23|[01]\d|\d)((:[0-5]\d){1,2})$

祝你好运


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接