使用 Java 正则表达式进行日期验证
使用 Java 正则表达式进行日期验证
在使用正则表达式进行的 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 : 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]$
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());
}
程序输出:
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 程序。
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());
}
程序输出:
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}$
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());
}
程序输出:
07/13/2011 : false
13/07/2011 : true
1/1/11 : false
01/1/2011 : false
可以随意使用和编辑上述正则表达式来进行日期验证,以满足您的需求。
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果