💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 使用 Java 正则表达式进行日期验证 > 原文: [https://howtodoinjava.com/regex/java-regex-date-format-validation/](https://howtodoinjava.com/regex/java-regex-date-format-validation/) 在使用正则表达式进行的 **Java 日期验证**中,我们将学习验证简单的日期格式,例如`mm/dd/yy`,`mm/dd/yyyy`,`dd/mm/yy`和`dd mm/yyyy`。 在这里,我们想使用一个正则表达式来简单地检查输入是否为有效日期,而不尝试消除诸如 2 月 31 日这样的东西。 我们可能会认为,对于日期表达式而言,从概念上讲微不足道的事情应该是一件容易的事。 但事实并非如此。 主要问题是正则表达式不能直接处理数字。 我们不能告诉正则表达式“匹配 1 到 31 之间的数字”。 而是正则表达式逐个字符地工作。 我们使用`'3[01]|[12][0-9]|0?[1-9]'`来匹配 3,后跟 0 或 1,或者匹配 1 或 2,后跟任意数字,或者匹配一个可选的 0,后跟 1 到 9。因此,您必须选择您希望您的正则表达式的简单或准确的程度。 ## 1\. Java 日期验证正则表达式 – 允许省略前导零 > 正则表达式:`^[0-3]?[0-9]/[0-3]?[0-9]/(?:[0-9]{2})?[0-9]{2}$` ```java List dates = new ArrayList(); dates.add("1/1/11"); dates.add("01/01/11"); dates.add("01/01/2011"); dates.add("01/1/2011"); dates.add("1/11/2011"); dates.add("1/11/11"); dates.add("11/1/11"); String regex = "^[0-3]?[0-9]/[0-3]?[0-9]/(?:[0-9]{2})?[0-9]{2}$"; Pattern pattern = Pattern.compile(regex); for(String date : dates) { Matcher matcher = pattern.matcher(date); System.out.println(date +" : "+ matcher.matches()); } ``` 程序输出。 ```java 1/1/11 : true 01/01/11 : true 01/01/2011 : true 01/1/2011 : true 1/11/2011 : true 1/11/11 : true 11/1/11 : true ``` ## 2\. Java 日期验证正则表达式 – 要求前导零 > 正则表达式:`^[0-3][0-9]/[0-3][0-9]/(?:[0-9][0-9])?[0-9][0-9]$` ```java List dates = new ArrayList(); //With leading zeros dates.add("01/01/11"); dates.add("01/01/2011"); //Missing leading zeros dates.add("1/1/11"); dates.add("01/1/2011"); dates.add("1/11/2011"); dates.add("1/11/11"); dates.add("11/1/11"); String regex = "^[0-3][0-9]/[0-3][0-9]/(?:[0-9][0-9])?[0-9][0-9]$"; Pattern pattern = Pattern.compile(regex); for(String date : dates) { Matcher matcher = pattern.matcher(date); System.out.println(date +" : "+ matcher.matches()); } ``` 程序输出: ```java 01/01/11 : true 01/01/2011 : true 1/1/11 : false 01/1/2011 : false 1/11/2011 : false 1/11/11 : false 11/1/11 : false ``` ## 3\. Java 日期验证正则表达式 – 将`mm/dd/yyyy`与所需的前导零匹配 > 正则表达式:`^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$` 验证日期格式`mm/dd/yyyy`的 Java 程序。 ```java List dates = new ArrayList(); //With leading zeros dates.add("01/01/11"); dates.add("01/01/2011"); //Missing leading zeros dates.add("1/1/11"); dates.add("01/1/2011"); String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$"; Pattern pattern = Pattern.compile(regex); for(String date : dates) { Matcher matcher = pattern.matcher(date); System.out.println(date +" : "+ matcher.matches()); } ``` 程序输出: ```java 01/01/11 : false 01/01/2011 : true 1/1/11 : false 01/1/2011 : false ``` ## 4\. Java 日期验证正则表达式 – 将`dd/mm/yyyy`与所需的前导零匹配 用于验证日期格式`dd/mm/yyyy`的正则表达式。 > 正则表达式:`^(3[01]|[12][0-9]|0[1-9])/(1[0-2]|0[1-9])/[0-9]{4}$` ```java List dates = new ArrayList(); //With leading zeros dates.add("07/13/2011"); dates.add("13/07/2011"); //Missing leading zeros dates.add("1/1/11"); dates.add("01/1/2011"); String regex = "^(3[01]|[12][0-9]|0[1-9])/(1[0-2]|0[1-9])/[0-9]{4}$"; Pattern pattern = Pattern.compile(regex); for(String date : dates) { Matcher matcher = pattern.matcher(date); System.out.println(date +" : "+ matcher.matches()); } ``` 程序输出: ```java 07/13/2011 : false 13/07/2011 : true 1/1/11 : false 01/1/2011 : false ``` 可以随意使用和编辑上述正则表达式来进行**日期验证**,以满足您的需求。 学习愉快!