我们都知道了电子邮件地址验证是一个敏感的问题,也有关于对付它不编码整个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