Để khớp một biểu thức chính quy với chuỗi cho trước, bạn cần thực hiện các bước sau:
- Biên dịch biểu thức chính quy bằng phương thức
compile()của lớpPattern. - Lấy đối tượng
Matcherbằng cách truyền chuỗi đầu vào cần thiết làm tham số cho phương thứcmatcher()của lớpPattern. - Phương thức
matches()của lớpMatchertrả vềtruenếu khớp, ngược lại trả vềfalse. Do đó, hãy gọi phương thức này để xác thực dữ liệu.
Ví dụ: Khớp chỉ ngày
Ví dụ sau là biểu thức chính quy Java chỉ khớp với định dạng ngày:
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[]) {
// Tạo danh sách để lưu trữ các ngày
List 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");
// Biểu thức chính quy để khớp ngày (định dạng yyyy-MM-dd)
String regex = "[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])";
// Biên dịch biểu thức chính quy
Pattern pattern = Pattern.compile(regex);
// Khớp từng ngày
for (Object date : dates) {
Matcher matcher = pattern.matcher((CharSequence) date);
System.out.println(date + ": " + matcher.matches());
}
}
}
Kết quả
25-12-1990: false 25/12/1990: false 2010-06-24: true 05-02-1990: false 1920-11-03: true
Ví dụ: Khớp ngày và giờ
Ví dụ sau khớp cả ngày và giờ:
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[]) {
// Tạo danh sách để lưu trữ ngày giờ
List 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");
// Biểu thức chính quy để khớp ngày và giờ (yyyy-MM-dd HH:mm:ss)
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]";
// Biên dịch biểu thức chính quy
Pattern pattern = Pattern.compile(regex);
// Khớp từng giá trị
for (Object date : dates) {
Matcher matcher = pattern.matcher((CharSequence) date);
System.out.println(date + ": " + matcher.matches());
}
}
}
Kết quả
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