以下是与dd-MM-yyyy格式的日期匹配的正则表达式。
^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$
以该格式匹配字符串中的日期。
编译compile()
Pattern类的方法的以上表达式。
绕过所需的输入字符串作为matcher()
Pattern类的方法的参数,获取Matcher对象。
matches()
如果发生匹配,则Matcher类的方法返回true,否则返回false。因此,调用此方法以验证数据。
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}$"; //创建一个模式对象 Pattern pattern = Pattern.compile(regex); //匹配字符串中的已编译模式 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
matches()
String类的方法接受正则表达式,并将当前字符串与之匹配,如果匹配则返回true,否则返回false。因此,要验证给定的日期(字符串格式)是否为必需格式-
获取日期字符串。
matches()
通过将上面的正则表达式作为参数传递给它来调用方法。
import java.util.Scanner; public class Just { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter your name: "); String name = sc.nextLine(); System.out.println("Enter your Date of birth: "); String dob = sc.nextLine(); //正则表达式以MM-DD-YYY格式接受日期 String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$"; boolean result = dob.matches(regex); if(result) { System.out.println("Given date of birth is valid"); } else { System.out.println("Given date of birth is not valid"); } } }
Enter your name: Janaki Enter your Date of birth: 26/09/1989 Given date of birth is not valid
Enter your name: Janaki Enter your Date of birth: 09/26/1989 Given date of birth is valid