0

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

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

5 回答 5

4

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

function validateEmailAddress($email) {
  return filter_var($email, FILTER_VALIDATE_EMAIL) && preg_match('/@.+\.edu/', $email);
}
于 2013-03-06T06:27:49.310 回答
0

看一下这个

function ValidateEmail($email) { 

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

}
于 2013-03-06T06:47:51.040 回答
0

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

return preg_match("/^[^\s]+@[^\s]+\\.edu$/", $email);
于 2013-03-06T06:27:58.990 回答
0

我对正则表达式非常陌生。但是你可以在这段时间之后看到有这个块:[^\s]+. 胡萝卜 (^) 表示非,\s 表示空格(制表符、换行符、空格),而 + 表示匹配这些字符的数量不受限制,直到您到达正则表达式的下一部分(恰好是结尾)。这意味着.在电子邮件域中之后,您的脚本将匹配无限的非空白字符。这意味着两者都example@test.com可以example@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);
}

如果这不起作用(因为我的正则表达式很差),我会合并 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);
    }
}
于 2013-03-06T06:29:24.437 回答
0
    preg_match("/^[^\s]+@[^\s]+.[^\s]+$/", $email);

在这种模式中,.edu 应该放在模式的末尾:

    preg_match("/^[^\s]+@[^\s]+(.[^\s]+)*(\.edu)$/", $email);
于 2013-03-06T06:29:46.607 回答