NỘI DUNG BÀI VIẾT
Mục tiêu
Luyện tập sử dụng RegularExpression.
Mô tả bài toán
Viết phương thức để kiểm tra tính hợp lệ của một email.
Một email hợp lệ cần đạt các yêu cầu sau:
- Bắt đầu bằng một ký tự
- Không chứa các ký tự đặc biệt
- Có một ký tự @ ngăn cách tên email và domain
- Domain phải hợp lệ
Hướng dẫn
Bước 1: Tạo Pattern
Chúng ta có Email Regular Expression Pattern như sau:
^[A-Za-z0-9]+[A-Za-z0-9]*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)$;
Mô tả
Ký hiệu | Mô tả |
^ | Bắt đầu chuỗi String hoặc một dòng |
[A-Za-z0-9]+ | Email address phải bắt đầu với “[A-Za-z0-9]+” và có ít nhất một ký tự |
[A-Za-z0-9]*@ | tùy chọn theo “[A-Za-z0-9]”, và kết thúc bằng một ký hiệu “@” |
[A-Za-z0-9] | Domain phải sau @ và ký tự phải nằm trong [A-Za-z0-9] |
\\.[A-Za-z0-9] | Sau domain là phần mở rộng của domain sau dấu chấm, ví dụ: (.com, .net, .org) |
$ | Kết thúc chuỗi String hoặc kết thúc dòng |
Bước 2: Tạo lớp EmailExample
Ở đây ta tạo một biến static String EMAIL_REGEX chứa định dạng regular expression của email. Sau đó tạo một phương thức validate để kiểm tra email cần kiểm tra có hợp lệ với EMAIL_REGEX đã định nghĩa hay không.
public class EmailExample { private static Pattern pattern; private Matcher matcher; private static final String EMAIL_REGEX = "^[A-Za-z0-9]+[A-Za-z0-9]*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)$"; public EmailExample() { pattern = Pattern.compile(EMAIL_REGEX); } public boolean validate(String regex) { matcher = pattern.matcher(regex); return matcher.matches(); } }
Bước 3:Xây dựng mẫu mail hợp lệ/không hợp lệ cho việc kiểm thử
Xây dựng mẫu email hợp lệ
- a@gmail.com
- ab@yahoo.com
- abc@hotmail.com
Xây dựng mẫu email Không hợp lệ
- @gmail.com
- ab@gmail.
- @#abc@gmail.com
Bước 4: Tạo lớp kiểm thử EmailExampleTest
public class EmailExampleTest { private static EmailExample emailExample; public static final String[] validEmail = new String[] { "a@gmail.com", "ab@yahoo.com", "abc@hotmail.com" }; public static final String[] invalidEmail = new String[] { "@gmail.com", "ab@gmail.", "@#abc@gmail.com" }; public static void main(String args[]) { emailExample = new EmailExample(); for (String email : validEmail) { boolean isvalid = emailExample.validate(email); System.out.println("Email is " + email +" is valid: "+ isvalid); } for (String email : invalidEmail) { boolean isvalid = emailExample.validate(email); System.out.println("Email is " + email +" is valid: "+ isvalid); } } }
Quan sát kết quả khi thực thi kiểm thử
Email is a@gmail.com is valid: true Email is ab@yahoo.com is valid: true Email is abc@hotmail.com is valid: true Email is @gmail.com is valid: false Email is ab@gmail. is valid: false Email is @#abc@gmail.com is valid: false