Regex Email chuẩn
^[\\w!#$%&'\\*+/=?\`{|}~^-]+(?:\\.[\\w!#$%&'\\*+/=?\`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$
Giải thích
^ - đầu chuỗi
[\\w!#$%&'\\*+/=?\`{|}~^-]+ - local part: chữ, số, _ và các ký tự đặc biệt cho phép
(?:\\.[\\w...]+)* - các segment phân cách bằng dấu chấm
@ - ký tự @
(?:[a-zA-Z0-9-]+\\.)+ - domain labels
[a-zA-Z]{2,6} - TLD 2-6 chữ cái
$ - cuối chuỗi
Ví dụ hoàn chỉnh
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập email: ");
String input = sc.nextLine();
String regex = "^[\\w!#$%&'\\*+/=?\`{|}~^-]+(?:\\.[\\w!#$%&'\\*+/=?\`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
System.out.println("Match occurred - Email hợp lệ");
} else {
System.out.println("Match not occurred - Email không hợp lệ");
}
}
}
Kết quả
Nhập email: sample.123@gmail.com
Match occurred - Email hợp lệ
Lưu ý
- Regex này cover hầu hết email thực tế nhưng không 100% theo RFC 5322 (quá phức tạp).
- Thực tế nên dùng library validation (Apache Commons Validator, Hibernate Validator).
- Java 10+: có thể dùng
java.util.regex.Pattern.compile(regex, Pattern.COMMENTS) để viết regex readable hơn.