php正则匹配电子邮件,php – 使用正则表达式验证电子邮件地址

这个问题没有简单的正则表达式:see

this fully RFC‑822–compliant regex,这是什么不简单。 (它是在语法模式之前写的。)

RFC 5322中规定的语法对于原始正则表达式来说太复杂了。

Perl,PCRE和PHP中更复杂的语法模式可以全部manage to correctly parse RFC 5322 without a hitch.Python和C#也应该能够管理它,但他们使用与前三个语法不同的语法。然而,如果你被迫使用许多不太强大的模式匹配语言之一,那么最好使用一个真正的解析器。

同样重要的是要理解,根据RFC验证它是绝对没有关于该地址是否实际存在于提供的域,或输入地址的人是否是其真正的所有者。人们签署他人,直到邮件列表这种方式所有的时间。修复需要一种类型的验证,其涉及向该地址发送包括确认令牌的消息,该确认令牌意图在与该地址相同的网页中输入。

确认令牌是知道你有进入它的人的地址的唯一方法。这就是为什么大多数邮件列表现在使用该机制来确认注册。毕竟,任何人都可以放下president@whitehouse.gov,甚至会解析为法律,但它不可能是另一端的人。

There is some danger that common usage and widespread sloppy coding will establish a de facto standard for e-mail addresses that is more restrictive than the recorded formal standard.

这不比所有其他非RFC模式更好。它甚至不够聪明,甚至不能处理甚至RFC 822,更不用说RFC 5322. This one,是。

如果你想得到花哨和pedantic,implement a complete state engine.正则表达式只能作为一个初步的过滤器。正则表达式的问题是告诉别人他们完全有效的电子邮件地址是无效的(假阳性),因为你的正则表达式不能处理它从用户的角度来说是粗鲁和无礼。用于该目的的状态引擎可以验证甚至校正电子邮件地址,否则将根据每个RFC拆分电子邮件地址被认为无效。这允许潜在地更愉悦的体验,例如

The specified e-mail address ‘myemail@address,com’ is invalid. Did you mean ‘myemail@address.com’?

117142c23b4b9b36e3aab46c2ef98de5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值