我們都知道了電子郵件地址驗證是一個敏感的問題,也有關於對付它不編碼整個RFC的最佳途徑這麼多意見。但自2009年以來,它變得更加困難,我還沒有真正看到任何人解決IDN的問題。的preg_match驗證(國際域名)
這裏是我一直使用的是什麼:
preg_match(/^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,6}\z/i)
這將爲大多數電子郵件地址,但如果我需要匹配一個非拉丁文的電子郵件地址是什麼工作?例如: - 鮑勃@中國。中國,或[email protected]рф完整列表
看here。 (請注意列表底部的所有非拉丁域名擴展名。)
關於此主題的信息可以找到here,我想他們在說的是這些新字符將被簡單地理解爲'.xn - fiqz9s '和'.xn - p1ai'在機器級別上,但我不是100%確定的。
如果是,這是否意味着我需要考慮讓我的代碼下面唯一的變化? (對於域擴展名如.travelersinsurance和.sandvikcoromant)
preg_match(/^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,20}\z/i)
注意:這是不是與此頁面上找到的討論Using a regular expression to validate an email address
這不是重複的,它要求的東西,當引有人問根本不存在。 –
@Stilleur國際域名方面(IDN的)驗證不被任何該網頁上的討論。 – Vince
@Vince是的,對不起。正如我剛剛標記你的問題。我問自己,我怎樣才能取消它(我贊成它,因爲它是非常interresting)。 – Stilleur