如何在以下代码中将电子邮件地址限制为.edu?
function ValidateEmail($email) {
global $debug;
if($debug)
return TRUE;
else
return preg_match("/^[^\s]+@[^\s]+.[^\s]+$/", $email);
}
答案 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.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);
}
如果这不起作用(因为我在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;
}
}