使用 Java 正则表达式进行日期验证

使用 Java 正则表达式进行日期验证

原文: https://howtodoinjava.com/regex/java-regex-date-format-validation/

在使用正则表达式进行的 Java 日期验证中,我们将学习验证简单的日期格式,例如mm/dd/yymm/dd/yyyydd/mm/yydd 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

可以随意使用和编辑上述正则表达式来进行日期验证,以满足您的需求。

学习愉快!