Email Regex Python

Nếu bạn nghĩ rằng một cái gì đó đơn giản về mặt khái niệm như xác thực địa chỉ email sẽ có một giải pháp regex đơn giản phù hợp với tất cả mọi người, thì bạn đã hoàn toàn sai lầm. Công thức này là một ví dụ điển hình mà trước khi bạn có thể bắt đầu viết một biểu thức chính quy, bạn phải quyết định chính xác những gì bạn muốn so khớp. Không có quy tắc được thống nhất chung về việc địa chỉ email nào hợp lệ và địa chỉ nào không. Nó phụ thuộc vào định nghĩa của bạn về hợp lệ

[email protected] hợp lệ theo RFC 5322, xác định cú pháp cho địa chỉ email. Nhưng nó không hợp lệ nếu định nghĩa của bạn chỉ định rằng địa chỉ email hợp lệ là địa chỉ chấp nhận thư. Không có tên miền asdf cấp cao nhất

Câu trả lời ngắn gọn cho vấn đề về tính hợp lệ là bạn không thể biết liệu [email protected] có phải là địa chỉ email thực sự có thể nhận email hay không cho đến khi bạn thử gửi email đến địa chỉ đó. Và thậm chí sau đó, bạn không thể chắc liệu việc thiếu phản hồi có báo hiệu rằng miền somewhere.com đang âm thầm loại bỏ thư được gửi đến các hộp thư không tồn tại hay liệu John Doe có nhấn nút Xóa trên bàn phím hay bộ lọc thư rác của anh ấy đã đánh bại anh ấy.

Bởi vì cuối cùng bạn phải kiểm tra xem địa chỉ có tồn tại hay không bằng cách thực sự gửi email đến địa chỉ đó, nên bạn có thể quyết định sử dụng biểu thức chính quy đơn giản hơn hoặc thoải mái hơn. Cho phép các địa chỉ không hợp lệ lọt qua có thể tốt hơn là làm phiền mọi người bằng cách chặn các địa chỉ hợp lệ. Vì lý do này, bạn có thể muốn chọn biểu thức chính quy "đơn giản". Mặc dù rõ ràng nó cho phép nhiều thứ không phải là địa chỉ email, chẳng hạn như #$%@.-, nhưng biểu thức chính quy này nhanh chóng và đơn giản và sẽ không bao giờ chặn địa chỉ email hợp lệ

Nếu bạn muốn tránh gửi quá nhiều email không gửi được, trong khi vẫn không chặn bất kỳ địa chỉ email thực nào, thì regex trong là một lựa chọn tốt

Bạn phải xem xét mức độ phức tạp mà bạn muốn biểu thức chính quy của mình. Nếu bạn đang xác thực đầu vào của người dùng, có thể bạn sẽ muốn một biểu thức chính quy phức tạp hơn, vì người dùng có thể nhập bất kỳ thứ gì. Nhưng nếu bạn đang quét các tệp cơ sở dữ liệu mà bạn biết chỉ chứa các địa chỉ email hợp lệ, thì bạn có thể sử dụng biểu thức chính quy rất đơn giản chỉ tách các địa chỉ email khỏi dữ liệu khác. Ngay cả giải pháp trong tiểu mục trước đó cũng có thể đủ trong trường hợp này

Cuối cùng, bạn phải cân nhắc xem bạn muốn biểu thức chính quy của mình trở thành bằng chứng như thế nào trong tương lai. Trước đây, việc giới hạn tên miền cấp cao nhất chỉ ở các tổ hợp hai chữ cái cho mã quốc gia và liệt kê đầy đủ các tên miền cấp cao chung chung—tức là ‹com|net|org|mil|edu›. Với các tên miền cấp cao mới được thêm vào mọi lúc, các biểu thức chính quy như vậy giờ đây nhanh chóng lỗi thời

cú pháp biểu thức chính quy

Các biểu thức chính quy được trình bày trong công thức này hiển thị tất cả các phần cơ bản của cú pháp biểu thức chính quy đang hoạt động. Nếu bạn đọc những phần này trong Chương 2, thì bạn đã có thể thực hiện 90% công việc được giải quyết tốt nhất bằng biểu thức chính quy

Tất cả các biểu thức chính quy, ngoại trừ biểu thức "đơn giản", yêu cầu bật tùy chọn đối sánh không phân biệt chữ hoa chữ thường. Nếu không, chỉ các ký tự viết hoa mới được phép. Bật tùy chọn này cho phép bạn gõ ‹[A-Z]› thay vì ‹[A-Za-z]›, tiết kiệm một vài lần nhấn phím

\S› là một lớp ký tự tốc ký, như Công thức 2. 3 giải thích. ‹\S› khớp với bất kỳ ký tự nào không phải là ký tự khoảng trắng

asdf0› và ‹asdf1› lần lượt khớp với ký hiệu @ và dấu chấm. Vì dấu chấm là một siêu ký tự khi được sử dụng bên ngoài các lớp ký tự, nên nó cần được thoát bằng dấu gạch chéo ngược. Dấu hiệu @ không bao giờ có ý nghĩa đặc biệt với bất kỳ biểu thức chính quy nào trong cuốn sách này. Công thức 2. 1 cung cấp cho bạn danh sách tất cả các siêu ký tự cần thoát

asdf2› và các dãy khác nằm giữa dấu ngoặc vuông là các lớp ký tự. Cái này cho phép tất cả các chữ cái từ A đến Z, tất cả các chữ số từ 0 đến 9, cũng như dấu chấm và dấu gạch ngang. Mặc dù dấu gạch nối thường tạo ra một phạm vi trong một lớp ký tự, nhưng dấu gạch nối được coi là một chữ khi nó xuất hiện dưới dạng ký tự đầu tiên hoặc ký tự cuối cùng trong một lớp ký tự. Công thức 2. 3 cho bạn biết tất cả về các lớp ký tự, bao gồm cả việc kết hợp chúng với tốc ký, như trong ‹asdf3›. Lớp này khớp với một ký tự từ, cũng như bất kỳ ký tự nào trong số 19 ký tự dấu chấm câu được liệt kê

asdf4› và ‹asdf5›, khi được sử dụng bên ngoài các lớp ký tự, là các định lượng. Dấu cộng lặp lại mã thông báo regex trước đó một hoặc nhiều lần, trong khi dấu hoa thị lặp lại từ 0 lần trở lên. Trong các biểu thức chính quy này, mã thông báo được định lượng thường là một lớp ký tự và đôi khi là một nhóm. Do đó, ‹asdf6› khớp với một hoặc nhiều chữ cái, chữ số, dấu chấm và/hoặc dấu gạch ngang

Như một ví dụ về việc sử dụng một nhóm, ‹asdf7› khớp với một hoặc nhiều chữ cái, chữ số và/hoặc dấu gạch ngang, theo sau là một dấu chấm theo nghĩa đen. Dấu cộng lặp lại nhóm này một hoặc nhiều lần. Nhóm phải khớp ít nhất một lần, nhưng có thể khớp nhiều lần nhất có thể. Công thức 2. 12 giải thích chi tiết cơ chế của dấu cộng và các bộ định lượng khác

asdf8› là một nhóm không chụp ảnh. Nhóm chụp ‹______19› thực hiện điều tương tự với cú pháp rõ ràng hơn, vì vậy bạn có thể thay thế ‹[email protected]0› bằng ‹[email protected]1› trong tất cả các biểu thức chính quy mà chúng tôi đã sử dụng cho đến nay mà không thay đổi kết quả đối sánh tổng thể. Nhưng vì chúng tôi không quan tâm đến việc thu thập riêng các phần của địa chỉ email, nên nhóm không thu thập phần nào hiệu quả hơn, mặc dù nó làm cho biểu thức chính quy hơi khó đọc hơn. Công thức 2. 9 cho bạn biết tất cả về các nhóm bắt và không bắt

Trong hầu hết các hương vị regex, các dấu neo ‹[email protected]2› và ‹[email protected]3› buộc biểu thức chính quy tìm kết quả khớp của nó ở đầu và cuối của văn bản chủ đề, tương ứng. Việc đặt toàn bộ biểu thức chính quy giữa các ký tự này yêu cầu biểu thức chính quy phải khớp với toàn bộ chủ đề một cách hiệu quả

Điều này rất quan trọng khi xác thực đầu vào của người dùng. Bạn không muốn chấp nhận [email protected]4[email protected]5 làm địa chỉ email hợp lệ. Không có các neo, tất cả các biểu thức chính quy trước đó sẽ khớp vì chúng tìm thấy [email protected]6 ở giữa văn bản đã cho. Xem Công thức 2. 5 để biết chi tiết về neo. Công thức đó cũng giải thích lý do tại sao phải tắt tùy chọn đối sánh “^ và $ khớp với ngắt dòng” đối với các biểu thức chính quy này

Trong Ruby, dấu mũ và đô la luôn khớp nhau khi ngắt dòng. Các biểu thức chính quy sử dụng dấu mũ và đô la hoạt động chính xác trong Ruby, nhưng chỉ khi chuỗi bạn đang cố xác thực không chứa dấu ngắt dòng. Nếu chuỗi có thể chứa ngắt dòng, tất cả biểu thức chính quy sử dụng ‹[email protected]2› và ‹[email protected]3› sẽ khớp với địa chỉ email trong [email protected]9joe@server. hàisomewhere.com0 haha. , trong đó somewhere.com0 đại diện cho ngắt dòng

Để tránh điều này, hãy sử dụng các ký tự neo ‹somewhere.com2› và ‹somewhere.com3› thay thế. Các giá trị này chỉ khớp ở phần đầu và phần cuối của chuỗi, bất kể tùy chọn nào, theo mọi cách được thảo luận trong cuốn sách này, ngoại trừ JavaScript. JavaScript hoàn toàn không hỗ trợ ‹somewhere.com2› và ‹somewhere.com3›. Công thức 2. 5 giải thích những neo này

thận trọng

Sự cố với ‹______22› và ‹[email protected]3› so với ‹somewhere.com2› và ‹somewhere.com3› áp dụng cho tất cả các biểu thức chính quy xác thực đầu vào. Có rất nhiều trong số này trong cuốn sách này. Mặc dù thỉnh thoảng chúng tôi sẽ đưa ra lời nhắc, nhưng chúng tôi sẽ không liên tục lặp lại lời khuyên này hoặc hiển thị các giải pháp riêng biệt cho JavaScript và Ruby cho từng công thức. Trong nhiều trường hợp, chúng tôi sẽ chỉ hiển thị một giải pháp bằng cách sử dụng dấu mũ và đô la, đồng thời liệt kê Ruby là một hương vị tương thích. Nếu bạn đang sử dụng Ruby, hãy nhớ sử dụng ‹somewhere.com2› và ‹somewhere.com3› nếu bạn muốn tránh khớp một dòng trong một chuỗi nhiều dòng

Xây dựng một regex từng bước

Công thức này minh họa cách bạn có thể xây dựng một biểu thức chính quy theo từng bước. Kỹ thuật này đặc biệt tiện dụng với trình kiểm tra biểu thức chính quy tương tác, chẳng hạn như RegexBuddy

Đầu tiên, tải một loạt dữ liệu mẫu hợp lệ và không hợp lệ vào công cụ. Trong trường hợp này, đó sẽ là danh sách địa chỉ email hợp lệ và danh sách địa chỉ email không hợp lệ

Sau đó, viết một biểu thức chính quy đơn giản khớp với tất cả các địa chỉ email hợp lệ. Bỏ qua các địa chỉ không hợp lệ ngay bây giờ. ‹#$%@.-2› đã xác định cấu trúc cơ bản của địa chỉ email. một phần cục bộ, một dấu hiệu và một tên miền

Với cấu trúc cơ bản của mẫu văn bản đã xác định, bạn có thể tinh chỉnh từng phần cho đến khi cụm từ thông dụng của bạn không còn khớp với bất kỳ dữ liệu không hợp lệ nào. Nếu biểu thức chính quy của bạn chỉ phải hoạt động với dữ liệu đã có trước đó, thì đó có thể là một công việc nhanh chóng. Nếu regex của bạn phải hoạt động với bất kỳ đầu vào nào của người dùng, việc chỉnh sửa biểu thức chính quy cho đến khi nó đủ hạn chế sẽ là một công việc khó hơn nhiều so với việc chỉ làm cho nó khớp với dữ liệu hợp lệ

Làm cách nào để xác minh email bằng Python?

Các phương pháp xác minh email bằng Python .
lại. Tìm kiếm().
Mã số. # nhập mô-đun regex nhập lại # hoàn thiện email mẫu regex pattern = "^[A-Za-z0-9]+[\. _]?[.
đầu ra. Email đã xác minh Email chưa xác minh Email chưa xác minh Email đã xác minh Email đã xác minh

Làm cách nào để kiểm tra email bằng regex trong Python?

Phương pháp 1. Sử dụng gói "lại" .
nhập lại
biểu thức chính quy = '^[a-z0-9]+[\. _]?[ a-z0-9]+[@]\w+[. ]\w{2,3}$'
kiểm tra chắc chắn (email)
nếu (lại. tìm kiếm (regex, email))
print("Email hợp lệ")
print("Email không hợp lệ")
nếu __name__ == '__main__'

Regex cho email là gì?

Biểu thức chính quy là một chuỗi ký tự xác định một mẫu cụ thể và còn được đặt tên là biểu thức chính quy viết tắt hoặc biểu thức chính quy và đôi khi được gọi là biểu thức hữu tỷ. chúng ta có thể tạo biểu thức chính quy như ( “/ABC/” ,”Ab_123. CD” ,”abc123. -@&” …)

Làm cách nào để xác thực email bằng regex?

Để nhận id email hợp lệ, chúng tôi sử dụng biểu thức chính quy /^[a-zA-Z0-9. #$%&'*+/=?^_`{. }~-]+@[a-zA-Z0-9-]+(?. \. [a-zA-Z0-9-]+)*$/. .
Chữ hoa (A-Z) và chữ thường (a-z) chữ cái tiếng Anh
Chữ số (0-9)
Nhân vật. # $ % & ' * + - / = ?.
Nhân vật