2015-08-14 53 views
1

我搜索了一段時間,只發現了其他RFC標準的現成可用解決方案。另外,我認爲函數filter_var中的PHP構建也不適合我,因爲(根據PHP.net),FILTER_VALIDATE_EMAIL常量僅檢查RFC 822地址。郵件驗證符合RFC 2821

我只找到這個JAVA正則表達式:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\]) 

但是,試圖將這個mosnter轉化爲PHP與我的業餘Java的技巧之前,我寧願想問問這裏的論壇..

最多現在我用下面的(不完全)的正則表達式:

/^[a-zA-Z0-9-\!\\\\\$\&\*\=\^\`\|\~\#\%\'\+\/\?\_\{\}]{2,}[@][a-zA-Z0-9-]{2,}\.[a-zA-Z]{2,}$/ 

什麼是適當的正則表達式根據檢查電子郵件地址RFC 282 1

+6

發送驗證碼到那個電子郵件並且由他們驗證是唯一真正地工作的方式 –

+1

正如@NullPoiиteя所說的那樣,發送驗證通過電子郵件代碼正則表達式不會阻止用戶提供一個儘管有效的電子郵件地址,但它可能完全是虛假的。 – npinti

+1

我同意NullPoiиte?評論和以前發送電子郵件,您可以檢查是否存在該域的MX條目,因爲如果它不存在,電子郵件發送肯定會失敗。這可以使用函數'getmxrr'進行測試http://php.net/getmxrr – mmm

回答

0

從NullPoiиteя評論:

發送驗證碼到該電子郵件和驗證它們是唯一的出路,其作品真的

0

可以使用rfc822.php驗證電子郵件

require_once "ref822.php" 
if(is_valid_email_address("email..")){ 
    //valid 
} 
+0

謝謝你的回答。這個標準是否與RFC 2821兼容?在我的研究過程中,我沒有找到任何有關這方面的信息。 – Benjamin

+0

嗯,它是822/2822/5322但不是2821年,對不起 –