Tôi đã phải đào một số ngày hôm nay để tìm nó, nhưng bạn có biết độ dài hợp lệ của một địa chỉ email là bao nhiêu không? Nó thực sự được chia thành nhiều phần… Name@Domain.com. Đây là theo RFC2822.
- Tên có thể từ 1 đến 64 ký tự.
- Miền có thể từ 1 đến 255 ký tự.
Chà… điều đó có nghĩa là đây có thể là một địa chỉ email hợp lệ:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc @ loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPhesiaesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com
Hãy thử lắp nó vào danh thiếp! Trớ trêu thay, hầu hết các trường địa chỉ email được giới hạn trong 100 ký tự trên web. Điều đó thực sự không hợp lệ. Nếu bạn muốn xác thực địa chỉ email để xây dựng phù hợp bằng cách sử dụng PHP, tôi đã tìm thấy đoạn mã này trên mạng:
http://derrick.pallas.us/email-validator/ # Giấy phép: Giấy phép Miễn phí Học thuật 2.1 # Phiên bản: 2006-12-01a if (! ereg (''. '^'. '[-! # $% & \ '* + / 0-9 =? AZ ^ _a-z {|} ~]'. '(\\.? [-! # $% & \' * + / 0-9 =? AZ ^ _a-z { |} ~]) * '.' @ '.' [a-zA-Z] (-? [a-zA-Z0-9]) * '.' (\\. [a-zA-Z] (- ? [a-zA-Z0-9]) *) + '.' $ ', $ email)) trả về false; list ($ local, $ domain) = split ("@", $ email, 2); if (strlen ($ local)> 64 || strlen ($ domain)> 255) return false; if ($ check &&! gethostbynamel ($ domain)) trả về false; trả về true; # KẾT THÚC ###### }
Tôi rất vui vì ai đó thấy nó hữu ích! Tìm kiếm “email regexp” trên Google cho thấy rất nhiều cụm từ thông dụng không đồng bộ hóa với RFC.
Có, tôi cũng nhận thấy sự thiếu tuân thủ của các giải pháp khác với RFC. Tuy nhiên, tôi đã nhận thấy rằng ngay cả regex này cũng không điển hình và không phải là tiêu chuẩn. Tôi nhớ việc đọc regex thực tế (cho phép <,>, v.v.) là quá chuyên sâu đối với hầu hết các quy trình.
Tuy nhiên, nó được viết ngắn gọn và chắc chắn là một giải pháp có thể chấp nhận được đối với bất kỳ ứng dụng email doanh nghiệp nào.
Cảm ơn, một lần nữa!
Doug
Thật không may, tôi đã liên kết trang đó với RFC sai (2821 thay vì 2822) nhưng điều đó đã được sửa chữa. Dấu ngoặc nhọn không được là một phần của phần cục bộ hoặc miền của địa chỉ email; thay vào đó, chúng đại diện cho các điểm mã hóa, tức là chúng có thể được sử dụng để bao quanh một địa chỉ email (ví dụ như trong trình đọc thư của bạn) một cách chính xác vì chúng không thể là một phần của địa chỉ.
Một điều mà chức năng của tôi không làm là lo lắng về dạng địa chỉ email được trích dẫn - nơi phần cục bộ xuất hiện trong dấu ngoặc kép - bởi vì RFC2821 về cơ bản nói rằng không ai phải viết địa chỉ của họ theo cách đó. (Tôi tin rằng biểu mẫu này là để tương thích ngược và bây giờ là một phương pháp không tốt.)
Trên thực tế RFC2821 LÀ tham chiếu chính xác cho độ dài địa chỉ email. Tôi đã tìm thấy nó ở đó, nhưng không phải trong RFC 2822.
Có một hạn chế trong RFC 2821 về độ dài của một địa chỉ trong lệnh MAIL và RCPT là 256 ký tự. Giới hạn trên về độ dài địa chỉ thường được coi là 256.
- Nguồn: RFC 3696 Errata
Ngoài ra, vì RFC 2181 cho biết “Tên miền đầy đủ được giới hạn ở 255 octet”, nên nó nhiều lần bị mọi người (bao gồm cả người viết các RFC khác) hiểu sai, nghĩa là tên miền có thể dài 255 ký tự. Nhưng RFC2181 đang nói về biểu diễn cấp độ giao thức DNS trên dây, không phải các ký tự có thể in được.
Độ dài tối đa của một tên miền là 253 ký tự (254 bao gồm dấu chấm ở cuối, 255 octet trên dây với phần cuối là null). Và đó là những gì BIND và DiG thực hiện.
Các nhà phát triển đánh giá thấp kích thước tiềm năng của địa chỉ email đã gây ra một số vấn đề: http://www.eph.co.uk/resources/email-address-le...
Tôi đoán nếu địa chỉ email của bạn là một cái gì đó nhỏ như “jack1983@aol.com”, bạn có thể nghĩ rằng thậm chí 30 ký tự là hào phóng.
Xin lỗi, URL ở trên bị hỏng…
Các nhà phát triển đánh giá thấp kích thước tiềm năng của địa chỉ email đã gây ra một số vấn đề:
http://www.eph.co.uk/resources/email-address-leng...
Tôi đoán nếu địa chỉ email của bạn là một cái gì đó nhỏ như "jack1983@aol.com", bạn có thể nghĩ rằng thậm chí 30 ký tự là hào phóng.
Chỉ cần tìm thấy bài đăng này ... vui nhộn. Bây giờ tôi đang tự hỏi nếu tôi có thể đăng ký tên miền đó lol.