>  기사  >  백엔드 개발  >  用PHP校验EMAIL地址的正确方法(1)_PHP教程

用PHP校验EMAIL地址的正确方法(1)_PHP教程

WBOY
WBOY원래의
2016-07-15 13:24:38873검색

由John Klensin编写的互联网任务工程组(IETF)文档RFC 3696 “应用程序技术检查和命名转换”给出了多个真实有效的EMAIL地址,但很不幸的是这些地址却被大多数PHP校验程序给拒绝了,地址Abc@def@example.com,customer/department=shipping@example.com 和!def!xyz%abc@example.com都是有效的,下面是在有关文献中给出的一个非常流行正则表达式,但它拒绝了前面给出的所有EMAIL地址:

^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$

这个正则表达式只允许下划线(_)和连字符(-),数字和大小写字母。即使在此之前先对字母做了大小写转换,也会拒绝那些包含斜线(/),等号(=),惊叹号(!)和百分号(%)的地址。这个表达式也要求最高级的域组件至少要有2个或3个字符,因此也会拒绝有效的域,如.museum。

另一个受人喜欢的正则表达式是:

^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$

这个正则表达式也会拒绝前面段落给出的有效示例地址,它优雅地解决了大写字母问题,并且当最高级域名只有2个或3个字符也不会报错了,但它又允许无效的域名,如example..com。

清单1显示了一个来自PHP Dev Shed(

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446749.htmlTechArticle由John Klensin编写的互联网任务工程组(IETF)文档RFC 3696 “应用程序技术检查和命名转换”给出了多个真实有效的EMAIL地址,但很不幸的是这...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.