Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Chấp nhận chuỗi ngày (định dạng MM-dd-yyyy) dùng Java regex?

Dưới đây là biểu thức chính quy khớp ngày tháng năm định dạng dd-MM-yyyy.

^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$

Để khớp ngày trong chuỗi theo định dạng đó.

  • Biên dịch biểu thức trên bằng phương thức compile() của lớp Pattern.

  • Lấy đối tượng Matcher bằng cách truyền chuỗi đầu vào cần thiết làm tham số cho phương thức matcher() của lớp Pattern.

  • Phương thức matches() của lớp Matcher trả về true nếu khớp, ngược lại false. Do đó, gọi phương thức này để xác thực dữ liệu.

Ví dụ 1

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}$"; 
        // Tạo đối tượng pattern 
        Pattern pattern = Pattern.compile(regex); 
        // Khớp pattern đã biên dịch trong 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"); 
        } 
    } 
}

Kết quả

Date is valid

Phương thức matches() của lớp String chấp nhận biểu thức chính quy và khớp chuỗi hiện tại với nó, trả về true nếu khớp ngược lại false. Do đó, để kiểm tra xem ngày cho trước (dạng chuỗi) có đúng định dạng yêu cầu:

  • Lấy chuỗi ngày.
  • Gọi phương thức matches() trên nó bằng cách truyền biểu thức chính quy trên làm tham số.

Ví dụ 2

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(); 
        // Biểu thức chính quy chấp nhận ngày MM-DD-YYYY 
        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"); 
        } 
    } 
}

Kết quả 1

Enter your name: Janaki Enter your Date of birth: 26/09/1989 Given date of birth is not valid

Kết quả 2

Enter your name: Janaki Enter your Date of birth: 09/26/1989 Given date of birth is valid