Regex tìm tất cả địa chỉ email trong văn bản

Dùng /[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g để tìm mọi kết quả khớp trong một đoạn văn bản. 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ở trong Regex Tester với dữ liệu mẫu được nạp sẵn.

Cập nhật

/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g
Mở trong Regex Tester

Văn bản mẫu

Contact sales@example.com or support@devpack.app. Jane (jane.doe+news@mail.example.co.uk) replied; ignore @handles and user@localhost.

3 kết quả khớp

sales@example.com support@devpack.app jane.doe+news@mail.example.co.uk

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

PhầnÝ nghĩa
[A-Za-z0-9._%+-]+Phần cục bộ (local part)
@Dấu @
[A-Za-z0-9.-]+\.[A-Za-z]{2,}Tên miền và đuôi miền cấp cao nhất
g flagTìm mọi kết quả khớp, không chỉ kết quả đầu tiên

Ví dụ code

JavaScript

const matches = text.match(/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g) ?? [];

Python

import re

matches = re.findall(r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}', text)

PHP

preg_match_all('/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/', $text, $m);
$matches = $m[0];

Ghi chú và giới hạn

Nếu bỏ các neo ^ và $ thì mẫu sẽ tìm địa chỉ email ở bất kỳ đâu trong văn bản. Dán toàn bộ tài liệu vào Regex Tester để liệt kê mọi kết quả khớp.

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

Regex tìm tất cả địa chỉ email trong văn bản là gì?
/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g — mẫu này tìm mọi kết quả khớp trong văn bản. Xem bảng ở trên để biết từng phần làm gì.
Có dùng được trong Python và PHP không?
Có — các ví dụ code ở trên dùng cùng mẫu này với re trong Python và các hàm preg trong PHP.
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.