Regex cho địa chỉ email

Dùng /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ để kiểm tra toàn bộ chuỗi có phải là một địa chỉ email hợp lệ hay không. Mọi ví dụ bên dưới đều đã được kiểm thử với mẫu này, và bạn có thể mở chúng trong Regex Tester với sẵn dữ liệu mẫu.

Cập nhật

/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/
Mở trong Regex Tester
Đầu vàoKết quả
user@example.com✓ Khớp
first.last+news@mail.example.co.uk✓ Khớp
x_y%z@sub.domain.io✓ Khớp
plainaddress✗ Không khớp
@example.com✗ Không khớp
user@domain✗ Không khớp
user name@example.com✗ Không khớp
user@@example.com✗ Không khớp

Cách mẫu hoạt động

Thành phầnÝ nghĩa
^Đầu chuỗi
[A-Za-z0-9._%+-]+Phần local: một hoặc nhiều chữ cái, chữ số, dấu chấm, gạch dưới, dấu phần trăm, dấu cộng hoặc dấu gạch ngang
@Ký tự @ nguyên văn
[A-Za-z0-9.-]+Tên miền, bao gồm cả subdomain
\.Dấu chấm nguyên văn trước tên miền cấp cao nhất
[A-Za-z]{2,}Tên miền cấp cao nhất: từ hai chữ cái trở lên (com, io, museum)
$Cuối chuỗi

Ví dụ code

JavaScript

const re = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}', value))

PHP

preg_match('/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/', $value) === 1;

Ghi chú và giới hạn

Đây là mẫu thực tế mà hầu hết form đăng ký đang dùng. Nó chấp nhận một số địa chỉ kỳ lạ về mặt kỹ thuật (có hai dấu chấm liên tiếp) và từ chối một vài địa chỉ hợp lệ nhưng hiếm gặp (phần local có dấu ngoặc kép, tên miền dạng địa chỉ IP). Cách kiểm tra thật sự duy nhất đối với địa chỉ email là gửi liên kết xác nhận. Còn trong form HTML, <input type="email"> giúp bạn có kiểm tra hợp lệ từ trình duyệt mà không cần viết thêm gì.

Câu hỏi thường gặp

Regex cho địa chỉ email là gì?
/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ — mẫu này khớp với toàn bộ chuỗi. Xem bảng phía trên để biết mỗi phần làm gì.
Những ví dụ nào khớp?
Trong các ví dụ đã kiểm thử, những ví dụ khớp là: user@example.com, first.last+news@mail.example.co.uk, x_y%z@sub.domain.io. Các ví dụ còn lại thì không khớp.
Làm sao để kiểm thử regex này?
Nhấn “Mở trong Regex Tester”: mẫu, cờ và văn bản mẫu sẽ tự động được nạp, và các kết quả khớp sẽ được tô sáng khi bạn chỉnh sửa.