2013-10-06 112 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