เพื่อจับคู่ regular expression กับสตริงที่กำหนด ต้องทำตามขั้นตอนดังนี้:
- คอมไพล์ regular expression ด้วยเมธอด compile() ของคลาส Pattern
- สร้างอ็อบเจกต์ Matcher โดยส่งสตริงนำเข้าให้เมธอด matcher() ของ Pattern
- ใช้เมธอด matches() ของ Matcher ซึ่งคืนค่า true หากจับคู่ได้ false หากไม่จับคู่
ตัวอย่าง: Regex สำหรับวันที่ (รูปแบบ YYYY-MM-DD)
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Sample {
public static void main(String args[]) {
List<String> dates = new ArrayList<>();
dates.add("25-12-1990");
dates.add("25/12/1990");
dates.add("2010-06-24 06:30");
dates.add("05-02-1990");
dates.add("1920-11-03 12:40");
// Regex สำหรับวันที่ YYYY-MM-DD
String regex = "[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])";
Pattern pattern = Pattern.compile(regex);
for (String date : dates) {
Matcher matcher = pattern.matcher(date);
System.out.println(date + ": " + matcher.matches());
}
}
}
ผลลัพธ์
25-12-1990: false 25/12/1990: false 2010-06-24: true 05-02-1990: false 1920-11-03: true
คำอธิบาย: Regex นี้รับเฉพาะรูปแบบ YYYY-MM-DD เท่านั้น จึงไม่จับคู่กับ DD-MM-YYYY หรือรูปแบบที่มี slash
ตัวอย่าง: Regex สำหรับวันที่และเวลา (YYYY-MM-DD HH:MM:SS)
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Sample {
public static void main(String args[]) {
List<String> dates = new ArrayList<>();
dates.add("25-12-1990");
dates.add("25/12/1990");
dates.add("2010-06-24 12:30:40");
dates.add("05-02-1990 44:205:40");
dates.add("1920-11-03 06:25:40");
// Regex สำหรับวันที่และเวลา
String regex = "[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9]";
Pattern pattern = Pattern.compile(regex);
for (String date : dates) {
Matcher matcher = pattern.matcher(date);
System.out.println(date + ": " + matcher.matches());
}
}
}
ผลลัพธ์
25-12-1990: false 25/12/1990: false 2010-06-24 12:30:40: true 05-02-1990 44:205:40: false 1920-11-03 06:25:40: true
การแยกส่วนของ Regex วันที่และเวลา
| ส่วน | ความหมาย |
|---|---|
[0-9]{4} | ปี 4 หลัก |
(0[1-9]|1[0-2]) | เดือน 01-12 |
(0[1-9]|[1-2][0-9]|3[0-1]) | วันที่ 01-31 |
(2[0-3]|[01][0-9]) | ชั่วโมง 00-23 |
[0-5][0-9] | นาที/วินาที 00-59 |
หมายเหตุ: Regex นี้ตรวจสอบรูปแบบเท่านั้น ไม่ตรวจสอบความถูกต้องของวันที่จริง (เช่น 31 กุมภาพันธ์ จะผ่านการตรวจสอบ regex แต่เป็นวันที่ไม่มีจริง)