Bài học theo mô-đun (1/4)
Xác thực một email
Xác thực một email "chính xác" là một vấn đề khó nhiều hơn bạn tưởng: RFC 5322 là một con quái vật. Trong thực tế, chúng tôi chọn một mẫu đủ tốt mà chấp nhận những trường hợp thông thường và bác bỏ những trường hợp rõ ràng là sai.
Pattern: ^[\w.+-]+@[\w-]+(?:\.[\w-]+)+$[\w.+-]+-- phần cục bộ: chữ cái, chữ số,_,.,+,-.@-- dấu phân cách.[\w-]+(?:\.[\w-]+)+-- tên miền + ít nhất một TLD được phân tách bằng..
Nội dung chấp nhận: mario.rossi@example.com, foo+bar@sub.example.co.uk,
user_123@test-domain.io.
Nội dung từ chối: mario@, @example.com, mario@example (không có TLD), dấu cách.
sự đánh đổi
Mẫu trên không chấp nhận:
- Chuỗi được trích dẫn
"strange (things)"@example.com(RFC cho phép chúng). - Tên miền có ký tự Unicode (
\u00fcber@m\u00fcnchen.de). - TLD rất dài không vượt qua
\w(ví dụ: TLD được quốc tế hóa).
Nếu bạn cần chúng, hãy mở rộng lớp thành \p{L} bằng cờ u hoặc ủy quyền cho một
thư viện chuyên ngành.
Sự đánh đổi và các phương pháp hay nhất để xác thực email
Không có biểu thức chính quy nào có thể đảm bảo rằng địa chỉ email thực sự tồn tại. Các mẫu quá phức tạp sẽ làm giảm hiệu suất và loại trừ các miền bất thường nhưng hợp lệ. Tốt hơn là sử dụng mẫu xác thực đơn giản để từ chối lỗi chính tả rõ ràng và gửi mã xác minh.
Hãy thử nó
Nhận dạng mọi email trong văn bản. Sử dụng mẫu đơn giản: chữ cái/chữ số/dấu chấm trước tên miền @, có ít nhất một dấu chấm.
Hiển thị gợi ý
Mở rộng phần cục bộ thành [\\w.+-]+ và tên miền thành [\\w-]+\\.[\\w.-]+ để chấp nhận nhiều TLD.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Lấy miền (phần sau @) của mỗi email dưới dạng nhóm được đặt tên `dominio`.
Hiển thị gợi ý
Gói phần miền trong một nhóm được đặt tên: (?<dominio>[\\w.-]+).
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
Find the domain part of an email (everything after `@`), excluding the `@` sign using lookbehind.
Hiển thị gợi ý
Sử dụng giao diện tích cực (?<=@) phía trước lớp ký tự miền.
Giải pháp khả dụng sau 3 lần thử