如何在Java中使用正则表达式验证给定的日期格式,例如MM-DD-YYYY?
Java的java.util.regex包提供了各种类来查找字符序列中的特定模式。
此包的Pattern类是正则表达式的编译表示。要将正则表达式与String匹配,此类提供两种方法:
compile() − 此方法接受表示正则表达式的字符串,并返回Pattern对象的实例。
matcher() − 此方法接受一个String值,并创建一个matcher对象,该对象将给定的String与当前Pattern对象表示的模式匹配。
以下是匹配dd-MM-yyyy格式日期的正则表达式:
^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$
因此,要验证MM-DD-YYYY格式的日期字符串:
使用Pattern类的compile()方法编译上述正则表达式,并检索Pattern对象。
使用上面获得的对象,通过将所需的日期字符串作为参数调用matcher()方法,并从此方法检索Matcher对象。
Matcher类的matches()方法在匹配的情况下返回true,否则返回false。在从上一步获得的matcher对象上调用此方法。
示例
import java.util.regex.Matcher; import java.util.regex.Pattern; public class MatchingDate { public static void main(String[] args) { String date = "01/12/2019"; String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$"; //Creating a pattern object Pattern pattern = Pattern.compile(regex); //Matching the compiled pattern in the String Matcher matcher = pattern.matcher(date); boolean bool = matcher.matches(); if(bool) { System.out.println("Date is valid"); } else { System.out.println("Date is not valid"); } } }
输出
Date is valid
广告