ต่อไปนี้คือนิพจน์ทั่วไปที่ตรงกับวันที่ในรูปแบบ dd-MM-yyyy
^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$
เพื่อจับคู่วันที่ในสตริงในรูปแบบนั้น
-
รวบรวมนิพจน์ข้างต้นของวิธีการคอมไพล์ () ของคลาส Pattern
-
รับออบเจ็กต์ Matcher ที่ข้ามสตริงอินพุตที่ต้องการเป็นพารามิเตอร์ไปยังเมธอด matcher() ของคลาส Pattern
-
เมธอดmatch() ของคลาส Matcher จะคืนค่า จริง หากการจับคู่เกิดขึ้น มิฉะนั้น จะส่งกลับค่า เท็จ ดังนั้น เรียกใช้วิธีนี้เพื่อตรวจสอบข้อมูล
ตัวอย่างที่ 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}$"; //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
วิธีmatch() ของคลาส String ยอมรับนิพจน์ปกติและจับคู่สตริงปัจจุบันกับมันและคืนค่า true ในกรณีของการจับคู่และมิฉะนั้นจะคืนค่าเท็จ ดังนั้นเพื่อตรวจสอบว่าวันที่ที่กำหนด (ในรูปแบบสตริง) อยู่ในรูปแบบที่ต้องการหรือไม่ -
- รับสตริงวันที่
- เรียกใช้เมธอดmatch() โดยส่งนิพจน์ทั่วไปด้านบนเป็นพารามิเตอร์ไปที่มัน
ตัวอย่างที่ 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(); //Regular expression to accept date in MM-DD-YYY format 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"); } } }
ผลลัพธ์ 1
Enter your name: Janaki Enter your Date of birth: 26/09/1989 Given date of birth is not valid
ผลลัพธ์ 2
Enter your name: Janaki Enter your Date of birth: 09/26/1989 Given date of birth is valid