仅将电子邮件地址限制为一个顶级域名(TLD)?

时间:2013-03-06 06:17:35

标签: php

如何在以下代码中将电子邮件地址限制为.edu?

function ValidateEmail($email) {
    global $debug;
    if($debug)
        return TRUE;
    else
        return preg_match("/^[^\s]+@[^\s]+.[^\s]+$/", $email);
}

5 个答案:

答案 0 :(得分:4)

PHP 5.2或更高版本检查此代码

function validateEmailAddress($email) {
  return filter_var($email, FILTER_VALIDATE_EMAIL) && preg_match('/@.+\.edu/', $email);
}

答案 1 :(得分:0)

好吧,验证任何电子邮件的正则表达式都非常原始且不完整,但假设这对您来说足够好,您只需要在末尾显式添加“.edu”而不是[^ \ s] +,如下所示:

return preg_match("/^[^\s]+@[^\s]+\\.edu$/", $email);

答案 2 :(得分:0)

我是reg-expressions的新手。但是在这段时间之后你可以看到有这个块:[^\s]+。胡萝卜(^)指的不是,\ s引用空格(制表符,换行符,空格),+表示匹配这些字符的无限制,直到你到达正则表达式的下一部分(恰好是结尾)。这意味着在电子邮件域中的.之后,您的脚本将匹配无限的非空白字符。这意味着example@test.comexample@test.comcomcomcomcomcom都可以,但example@test.c om不会。将此[^\s]+替换为edu应该有效。

function ValidateEmail($email) {
    global $debug;
    if($debug)
        return TRUE;
    else
        return preg_match("/^[^\s]+@[^\s]+.edu$/", $email);
}

如果这不起作用(因为我在regexp上非常差),我会合并PHP的substr()。

function ValidateEmail($email) {
    global $debug;
    if($debug)
        return TRUE;
    else {
        if(substr($email,-4) != '.edu'))
             return false;
        else   // ends in .edu, check for valid email
             return preg_match("/^[^\s]+@[^\s]+.[^\s]+$/", $email);
    }
}

答案 3 :(得分:0)

    preg_match("/^[^\s]+@[^\s]+.[^\s]+$/", $email);

在此模式中,.edu应放在模式的末尾:

    preg_match("/^[^\s]+@[^\s]+(.[^\s]+)*(\.edu)$/", $email);

答案 4 :(得分:0)

检查出来

function ValidateEmail($email) { 

    if(filter_var($email, FILTER_VALIDATE_EMAIL)  && ( substr($email ,-4) == ".edu")){
        return true;
    }else{
        return false;
    }

}