2013-10-06 93 views
0

試圖在電子郵件文本字段上創建表單驗證。 以前曾使用驗證來確保生成正確的電子郵件。表單字段驗證自定義電子郵件要求

但這裏尋求建立一個更自定義規則,只允許在格式.ac.uk

在這裏,用戶將能夠只要提供任何大學/學院/制度中的作爲最後6個字符結尾的電子郵件在字符串中= .ac.uk與郵件的一般格式如下:[email protected]

溶液最好在PHP中,目前正在尋找在這個語句中使用的端部採用規則:

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

製作這個部分*(\.[a-z]{2,3})涉及.ac.uk

千恩萬謝,感激 Jeanclaude

+0

你的問題到底是什麼?你想讓我們寫一封符合你要求的電子郵件驗證器嗎? –

回答

1

我會首先通過filter_var($email, FILTER_VALIDATE_EMAIL)運行電子郵件,而不是使用一個簡單的正則表達式。這並不完美(我發現一些邊緣案例不能正確驗證),但效果很好。一旦你知道這是一個有效的電子郵件地址,你可以簡單地相信substr($email, -6) == '.ac.uk'並完成它。例如:

if (filter_var($email, FILTER_VALIDATE_EMAIL) 
    && strtolower(substr(trim($email), -6))) === '.ac.uk') { 

    // Valid 
} 
+0

(FILTER_VALIDATE_EMAIL在內部也作爲正則表達式實現。) – mario

+0

哦,這很有趣。我假設那是非常複雜的正則表達式之一。我仍然相信它是我經常看到的平均正則表達式,就像這篇文章中的正則表達式一樣。 –

+1

確實是這樣的:https://github.com/php/php-src/blob/master/ext/filter/logical_filters.c#L500有[更詳細的](http://stackoverflow.com/a/1917982/345031)當然,這完全覆蓋了rfc2822。但對大多數情況來說已足夠。 – mario