原文: 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}$
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());}
程序输出。
1/1/11 : true01/01/11 : true01/01/2011 : true01/1/2011 : true1/11/2011 : true1/11/11 : true11/1/11 : true
2. Java 日期验证正则表达式 – 要求前导零
正则表达式:
^[0-3][0-9]/[0-3][0-9]/(?:[0-9][0-9])?[0-9][0-9]$
List dates = new ArrayList();//With leading zerosdates.add("01/01/11");dates.add("01/01/2011");//Missing leading zerosdates.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());}
程序输出:
01/01/11 : true01/01/2011 : true1/1/11 : false01/1/2011 : false1/11/2011 : false1/11/11 : false11/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 程序。
List dates = new ArrayList();//With leading zerosdates.add("01/01/11");dates.add("01/01/2011");//Missing leading zerosdates.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());}
程序输出:
01/01/11 : false01/01/2011 : true1/1/11 : false01/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}$
List dates = new ArrayList();//With leading zerosdates.add("07/13/2011");dates.add("13/07/2011");//Missing leading zerosdates.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());}
程序输出:
07/13/2011 : false13/07/2011 : true1/1/11 : false01/1/2011 : false
可以随意使用和编辑上述正则表达式来进行日期验证,以满足您的需求。
学习愉快!
