[Thực hành] Validate email

String & Regex

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ệuMô 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ệ

  1. a@gmail.com
  2. ab@yahoo.com
  3. abc@hotmail.com

Xây dựng mẫu email Không hợp lệ

  1. @gmail.com
  2. ab@gmail.
  3. @#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

Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Leave a Reply

Your email address will not be published. Required fields are marked *