如何檢查由我的代碼生成的電子郵件是否有效(根據 RFC 5322)?RFC 5322電子郵件格式驗證
2
A
回答
3
這裏有一個PCRE正則表達式(從PHP庫中提取),將根據RFC 5322驗證:
'/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z\d-]{64,})(?1)(?>([a-z\d](?>[a-z\d-]*[a-z\d])?)(?>(?1)\.(?!(?1)[a-z\d-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f\d]{1,4})(?>:(?6)){7}|(?!(?:.*[a-f\d][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:|(?!(?:.*[a-f\d]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(?>\.(?9)){3}))\])(?1)$/isD'
不像彼得回答它允許單標籤域名(這是語法上有效)和IPv6地址文字。
但是,我強烈建議根據RFC 5321進行驗證,該驗證不允許評論或摺疊空白(語義上不可見,因此實際上不是電子郵件地址的一部分),也不允許過時的本地部分(可以重寫爲非過時的引用字符串):
'/^(?!(?>"?(?>\\\[ -~]|[^"])"?){255,})(?!"?(?>\\\[ -~]|[^"]){65,}"[email protected])(?>([!#-\'*+\/-9=?^-~-]+)(?>\.(?1))*|"(?>[ !#-\[\]-~]|\\\[ -~])*")@(?!.*[^.]{64,})(?>([a-z\d](?>[a-z\d-]*[a-z\d])?)(?>\.(?2)){0,126}|\[(?:(?>IPv6:(?>([a-f\d]{1,4})(?>:(?3)){7}|(?!(?:.*[a-f\d][:\]]){8,})((?3)(?>:(?3)){0,6})?::(?4)?))|(?>(?>IPv6:(?>(?3)(?>:(?3)){5}:|(?!(?:.*[a-f\d]:){6,})(?5)?::(?>((?3)(?>:(?3)){0,4}):)?))?(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(?>\.(?6)){3}))\])$/iD'
+0
必須參考有關使用regexp進行電子郵件驗證的參考QA:[使用正則表達式驗證電子郵件地址](http://stackoverflow.com/q/201323/4074148) – Veve
0
使用這個正則表達式就像98%有效。它不驗證如下:
[email protected][IPv6:2001:db8:1ff::a0b:dbd0]
但它涵蓋一切
^(([^<>()[\\]\\.,;:\\[email protected]\"]+(\\.[^<>()[\\]\\.,;:\\[email protected]\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$
注:這是直接從一些生產Golang代碼運所以增加了斜槓。
相關問題
- 1. 電子郵件驗證的問題[ABNF] [RF 5322]
- 2. jQuery不驗證電子郵件格式
- 3. 電子郵件格式驗證問題
- 4. 驗證電子郵件格式PHP
- 5. Android電子郵件驗證與Firebase電子郵件驗證
- 6. 電子郵件驗證使用Java的RFC 2821
- 7. Firebase電子郵件身份驗證iOS:「電子郵件格式不正確」
- 8. 發送電子郵件之前的電子郵件格式驗證ajax
- 9. posterous風格電子郵件驗證
- 10. Zend的形式驗證電子郵件
- 11. 電子郵件驗證表達式
- 12. CakePHP電子郵件驗證
- 13. 驗證電子郵件
- 14. rspec電子郵件驗證
- 15. 驗證電子郵件
- 16. Firebase電子郵件驗證
- 17. ResearchKit:驗證電子郵件
- 18. Jquery - 驗證電子郵件
- 19. 電子郵件驗證javascript
- 20. JavaScript電子郵件驗證
- 21. 電子郵件驗證:JavaScript
- 22. 電子郵件驗證 - HTML
- 23. NSRegularExpression驗證電子郵件
- 24. 電子郵件驗證PHP
- 25. 梨電子郵件驗證
- 26. OpenERP電子郵件驗證
- 27. JavaScript電子郵件驗證 - @
- 28. PHP - 電子郵件驗證
- 29. 電子郵件驗證
- 30. 電子郵件驗證/ PrimeFaces
您是試圖驗證電子郵件(即Internet電子郵件)還是電子郵件_addresses_? – pmocek