Đã đăng vào thg 8 18, 2019 3:31 SA 5 phút đọc Bài đăng này đã không được cập nhật trong 2 năm Textbox Email rất phổ biến trong một số Form Sign in, Sign up,.... Mình xin phép chia sẻ một số Testcase cho trường Email. 1. Bài toán đặt raKiểm thử Textbox nhập email giả sử yêu cầu email phải dựa vào các tiêu chí sau:
2. Testcase cho trường email
https://www.testingvn.com/viewtopic.php?f=15&t=3193 All rights reserved answer Đỗ Thúy Vy · Đỗ Thúy Vy 19:12 05/11/2011 Không có điểm nào. Ngay cả khi bạn có thể xác minh rằng địa chỉ email là hợp lệ về mặt cú pháp, bạn vẫn sẽ cần kiểm tra xem địa chỉ đó có bị nhầm hay không và nó thực sự thuộc về người mà bạn nghĩ. Cách duy nhất để làm điều đó là gửi cho họ một email và yêu cầu họ nhấp vào một liên kết để xác minh. Do đó, một kiểm tra cơ bản nhất (ví dụ: họ không vô tình nhập địa chỉ đường phố của họ) thường là đủ. Một cái gì đó như: nó có chính xác một @dấu hiệu, và ít nhất một .trong phần sau @: [^@]+@[^@]+\.[^@]+Có lẽ bạn cũng muốn không cho phép khoảng trắng - có thể có các địa chỉ email hợp lệ có khoảng trắng trong đó, nhưng tôi chưa bao giờ nhìn thấy một địa chỉ nào, vì vậy khả năng đây là lỗi người dùng nằm ở phía bạn. Nếu bạn muốn kiểm tra đầy đủ, hãy xem câu hỏi này . Cập nhật: Đây là cách bạn có thể sử dụng bất kỳ regex nào như vậy: import re if not re.match(r"... regex here ...", email): # whateverPython ≥3.4 có re.fullmatchcái nào thích hợp hơn re.match. Lưu ý rphía trước chuỗi; bằng cách này, bạn sẽ không cần phải trốn thoát hai lần. Nếu bạn có một số lượng lớn các biểu thức chính để kiểm tra, có thể nhanh hơn để biên dịch biểu thức chính trước: import re EMAIL_REGEX = re.compile(r"... regex here ...") if not EMAIL_REGEX.match(email): # whateverMột tùy chọn khác là sử dụng validate_emailgói, thực sự liên lạc với máy chủ SMTP để xác minh rằng địa chỉ tồn tại. Điều này vẫn không đảm bảo rằng nó thuộc về đúng người, mặc dù. 226 hữu ích 5 bình luận chia sẻ answer Hoàng Công Án · Hoàng Công Án 17:34 23/01/2013 Thư viện chuẩn Python đi kèm với chức năng phân tích cú pháp e-mail : email.utils.parseaddr(). Nó trả về hai tuple chứa tên thật và các phần địa chỉ thực của e-mail: >>> from email.utils import parseaddr >>> parseaddr('') ('', '') >>> parseaddr('Full Name <>') ('Full Name', '') >>> parseaddr('"Full Name with quotes and <>" <>') ('Full Name with quotes and <>', '')Và nếu việc phân tích cú pháp không thành công, nó sẽ trả về một chuỗi hai chuỗi trống: >>> parseaddr('[invalid!email]') ('', '')Một vấn đề với trình phân tích cú pháp này là nó chấp nhận bất cứ thứ gì được coi là địa chỉ email hợp lệ cho RFC-822 và bạn bè, bao gồm nhiều thứ rõ ràng không thể truy cập được trên Internet rộng rãi: >>> parseaddr('invalid@example,com') # notice the comma ('', 'invalid@example') >>> parseaddr('invalid-email') ('', 'invalid-email')Vì vậy, như @TokenMacGuy đã nói, cách duy nhất để kiểm tra địa chỉ email là gửi e-mail đến địa chỉ dự kiến và chờ người dùng hành động theo thông tin bên trong tin nhắn. Tuy nhiên, bạn có thể muốn kiểm tra, ít nhất, sự hiện diện của một @ -ign trên phần tử tuple thứ hai, như @bvukelic gợi ý: >>> '@' in parseaddr("invalid-email")[1] FalseNếu bạn muốn tiến thêm một bước, bạn có thể cài đặt dự án dnspython và giải quyết các máy chủ thư cho miền e-mail (phần sau '@'), chỉ cố gắng gửi e-mail nếu có MXmáy chủ thực tế : >>> from dns.resolver import query >>> domain = 'foo@'.rsplit('@', 1)[-1] >>> bool(query(domain, 'MX')) True >>> query('example.com', 'MX') Traceback (most recent call last): File "<stdin>", line 1, in <module> [...] dns.resolver.NoAnswer >>> query('not-a-domain', 'MX') Traceback (most recent call last): File "<stdin>", line 1, in <module> [...] dns.resolver.NXDOMAINBạn có thể bắt cả hai NoAnswervà NXDOMAINbằng cách bắt dns.exception.DNSException. Và có, foo@là một địa chỉ hợp lệ cú pháp. Chỉ @nên xem xét cuối cùng để phát hiện nơi phần tên miền bắt đầu. 105 hữu ích 5 bình luận chia sẻ answer Hoàng Huệ Phương · Hoàng Huệ Phương 09:03 11/03/2015 Tôi chưa thấy câu trả lời ở đây trong số các câu trả lời Regex tùy chỉnh, nhưng ... Tồn tại một thư viện python có tên là validate_email có 3 cấp độ xác thực email, bao gồm hỏi máy chủ SMTP hợp lệ nếu địa chỉ email hợp lệ (không gửi email). Kiểm tra chuỗi email có định dạng hợp lệ: from validate_email import validate_email is_valid = validate_email('')Kiểm tra xem máy chủ có Máy chủ SMTP không: is_valid = validate_email('',check_mx=True)Kiểm tra xem máy chủ có Máy chủ SMTP không và email có thực sự tồn tại không: is_valid = validate_email('',verify=True)Đối với những người quan tâm đến các chi tiết bẩn, validate_email.py ( nguồn ) nhằm mục đích trung thành với RFC 2822 .
Để cài đặt với pip pip install validate_emailvà bạn sẽ cần mô-đun pyDNS để kiểm tra máy chủ SMTP pip install pyDNShoặc từ Ubuntu apt-get python3-dns52 hữu ích 5 bình luận chia sẻ answer Lê Thiện Nhân · Lê Thiện Nhân 19:30 05/11/2011 Địa chỉ email không đơn giản như chúng có vẻ! Ví dụ: Bob_O'Reilly+, là một địa chỉ email hợp lệ. Tôi đã có một số may mắn với gói lepl ( http://www.acooke.org/lepl/ ). Nó có thể xác thực các địa chỉ email như được chỉ định trong RFC 3696: http://www.faqs.org/rfcs/rfc3696.html Tìm thấy một số mã cũ: import lepl.apps.rfc3696 email_validator = lepl.apps.rfc3696.Email() if not email_validator(""): print "Invalid email"21 hữu ích 4 bình luận chia sẻ answer Trịnh Thành Doanh · Trịnh Thành Doanh 11:26 06/12/2016 Tôi tìm thấy một cách tuyệt vời (và đã thử nghiệm) để kiểm tra địa chỉ email hợp lệ. Tôi dán mã của tôi ở đây: # here i import the module that implements regular expressions import re # here is my function to check for valid email address def test_email(your_pattern): pattern = re.compile(your_pattern) # here is an example list of email to check it at the end emails = ["", "", "wha.t.`1an?ug{}"] for email in emails: if not re.match(pattern, email): print "You failed to match %s" % (email) elif not your_pattern: print "Forgot to enter a pattern!" else: print "Pass" # my pattern that is passed as argument in my function is here! pattern = r"\"?([-a-zA-Z0-9.`?{}]+@\w+\.\w+)\"?" # here i test my function passing my pattern test_email(pattern)9 hữu ích 2 bình luận chia sẻ answer Tạ Thanh Việt · Tạ Thanh Việt 12:23 12/05/2017 Tôi thấy rất nhiều câu trả lời phức tạp ở đây. Một số trong số họ, không biết kiến thức đơn giản, địa chỉ email thật hoặc có thông tin sai. Dưới đây, là cách kiểm tra đơn giản nhất mà chuỗi sẽ là một email hợp lệ. Nó kiểm tra chống lại 2 và 3 chữ TLD. Bây giờ bạn về mặt kỹ thuật có thể có những cái lớn hơn, bạn có thể muốn tăng 3 lên 4, 5 hoặc thậm chí 10. import re def valid_email(email): return bool(re.search(r"^[\w\.\+\-]+\@[\w]+\.[a-z]{2,3}$", email))7 hữu ích 4 bình luận chia sẻ answer Võ Hoài Trung · Võ Hoài Trung 19:09 05/11/2011 Điều này thường được giải quyết bằng regex. Có nhiều biến thể của giải pháp tuy nhiên. Tùy thuộc vào mức độ nghiêm ngặt của bạn và nếu bạn có các yêu cầu tùy chỉnh để xác thực hoặc sẽ chấp nhận bất kỳ địa chỉ email hợp lệ nào. Xem trang này để tham khảo: http://www.THER-expressions.info/email.html 4 hữu ích 0 bình luận chia sẻ answer Hoàng Bảo Kiên · Hoàng Bảo Kiên 19:09 05/11/2011 Địa chỉ email là vô cùng phức tạp. Đây là một regex mẫu sẽ khớp với mọi địa chỉ hợp lệ RFC822: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html Bạn sẽ nhận thấy rằng nó có thể dài hơn phần còn lại của chương trình của bạn. Thậm chí có toàn bộ các mô-đun cho Perl với mục đích xác nhận địa chỉ email. Vì vậy, bạn có thể sẽ không nhận được bất cứ điều gì hoàn hảo 100% như một regex trong khi cũng có thể đọc được. Dưới đây là một trình phân tích cú pháp gốc đệ quy mẫu: http://cpansearch.perl.org/src/ABIGAIL/RFC-RFC822-Address-2009110702/lib/RFC/RFC822/Address.pm nhưng bạn sẽ cần phải quyết định xem bạn cần phân tích cú pháp hoàn hảo hay mã đơn giản. 3 hữu ích 0 bình luận chia sẻ answer Hoàng Bình Dân · Hoàng Bình Dân 08:15 05/11/2014 Nếu bạn muốn lấy thư từ một chuỗi hoặc tệp dài, hãy thử điều này. ([^@|\s]+@[^@]+\.[^@|\s]+)Lưu ý, điều này sẽ hoạt động khi bạn có một khoảng trắng trước và sau địa chỉ email của bạn. nếu bạn không có không gian hoặc có một số ký tự đặc biệt thì bạn có thể thử sửa đổi nó. Ví dụ làm việc: string="Hello ABCD, here is my mail id " res = re.search("([^@|\s]+@[^@]+\.[^@|\s]+)",string,re.I) res.group(1)Điều này sẽ lấy từ chuỗi này. Ngoài ra, lưu ý đây có thể không phải là câu trả lời đúng .. Nhưng tôi đã đăng nó ở đây để giúp một người có yêu cầu cụ thể như tôi 2 hữu ích 1 bình luận chia sẻ answer Bùi Anh Khải · Bùi Anh Khải 08:44 25/03/2018 import validator is_valid = validate_email('',verify=True) if (is_valid==True): return 1 else: return 0 Xem tài liệu hợp lệ_email . 2 hữu ích 0 bình luận chia sẻ answer Ngô Cao Sĩ · Ngô Cao Sĩ 16:55 13/08/2014 import re def email(): email = raw_input("enter the mail address::") match = re.search(r'[\w.-]+@[\w.-]+.\w+', email) if match: print "valid email :::", match.group() else: print "not valid:::" email() 1 hữu ích 1 bình luận chia sẻ answer Đặng Phúc Nguyên · Đặng Phúc Nguyên 11:24 09/08/2017 Tìm email-id: import re a=open("aa.txt","r") #c=a.readlines() b=a.read() c=b.split("\n") print(c) for d in c: obj=re.search(r'[\w.]+\@[\w.]+',d) if obj: print(obj.group()) #for more calcification click on image above..0 hữu ích 1 bình luận chia sẻ answer Trần Thư Lâm · Trần Thư Lâm 02:28 12/09/2018 Tìm thấy điều này là một thực hiện thực tế: [^@\s]+@[^@\s]+\.[^@\s]+0 hữu ích 0 bình luận chia sẻ answer Tạ Sơn Nam · Tạ Sơn Nam 19:42 10/01/2018 Để kiểm tra email, hãy sử dụng email_validator from email_validator import validate_email, EmailNotValidError def check_email(email): try: v = validate_email(email) # validate and get info email = v["email"] # replace with normalized form print("True") except EmailNotValidError as e: # email is not valid, exception message is human-readable print(str(e)) check_email("test@gmailcom")0 hữu ích 0 bình luận chia sẻ answer Vũ Thu Nhiên · Vũ Thu Nhiên 20:59 12/02/2019 Sử dụng mặt nạ lọc này cho đầu vào email: emailMask: /[\w.\-@'"!#$%&'*+/=?^_{|} ~] / i` 0 hữu ích 0 bình luận chia sẻ answer Dương Ðình Nguyên · Dương Ðình Nguyên 00:12 11/02/2015 "^[\w\.\+\-]+\@[\w]+\.[a-z]{2,3}$" 1 hữu ích 1 bình luận chia sẻ answer Phan Ngọc Khôi · Phan Ngọc Khôi 19:28 05/11/2011 Cách thực sự chính xác duy nhất để phân biệt địa chỉ email thực, hợp lệ với địa chỉ email không hợp lệ là gửi thư đến địa chỉ đó . Những gì được coi là một email đáng ngạc nhiên ( "John Doe" <>"thực sự là một địa chỉ email hợp lệ) và rất có thể bạn muốn địa chỉ email thực sự gửi thư đến nó sau này. Sau khi vượt qua một số kiểm tra vệ sinh cơ bản (như trong câu trả lời của Thomas, có một @và ít nhất một lần .sau @), bạn có thể chỉ cần gửi thư xác minh email đến địa chỉ và đợi người dùng theo liên kết được nhúng trong tin nhắn để xác nhận rằng email là hợp lệ. 3 hữu ích 0 bình luận chia sẻ |