由John Klensin編寫的互聯網任務工程組(IETF)文檔RFC 3696 “應用程序技術檢查和命名轉換”給出了多個真實有效的EMAIL地址,但很不幸的是這些地址卻被大多數PHP校驗程序給拒絕了,地址Abc@[email protected],customer/[email protected] 和!def!xyz%[email protected]都是有效的,下面是在有關文獻中給出的一個非常流行正則表達式,但它拒絕了前面給出的所有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(