如何限制电子邮件地址仅限于.edu,在以下代码中?限制电子邮件地址仅限于一个顶级域名(TLD)?
function ValidateEmail($email) {
global $debug;
if($debug)
return TRUE;
else
return preg_match("/^[^\s][email protected][^\s]+.[^\s]+$/", $email);
}
如何限制电子邮件地址仅限于.edu,在以下代码中?限制电子邮件地址仅限于一个顶级域名(TLD)?
function ValidateEmail($email) {
global $debug;
if($debug)
return TRUE;
else
return preg_match("/^[^\s][email protected][^\s]+.[^\s]+$/", $email);
}
PHP 5.2或以上的检查与此代码
function validateEmailAddress($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL) && preg_match('/@.+\.edu/', $email);
}
,因为它是一个语法上有效的电子邮件,为什么不把最终测试看作是“&& preg_match('/ \。edu $ /',$ email)”呢? – 2013-03-06 06:30:25
我喜欢的方法,但不是正则表达式。 :应该使用P''/ \。edu $ /''代替 – 2013-03-06 06:31:43
好了,你的正则表达式验证任何电子邮件是非常原始和不完整的,但假设这是对你不够好,你只需要添加“ .edu“,而不是[^ \ s] +,像这样:
return preg_match("/^[^\s][email protected][^\s]+\\.edu$/", $email);
我是reg表达式的新手。但是你可以看到有这个区块后的时间段:[^\s]+
。胡萝卜(^)指的不是,\ s指的是空格(制表符,换行符,空格),并且+表示匹配这些字符的无限制,直到到达正则表达式的下一部分(恰好是结尾)。这意味着在电子邮件域中的.
之后,您的脚本将匹配无限非空白字符。这意味着[email protected]
和[email protected]
都可以工作,但[email protected] om
不会。替换这个[^\s]+
与edu
应该工作。
function ValidateEmail($email) {
global $debug;
if($debug)
return TRUE;
else
return preg_match("/^[^\s][email protected][^\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][email protected][^\s]+.[^\s]+$/", $email);
}
}
preg_match("/^[^\s][email protected][^\s]+.[^\s]+$/", $email);
在这个模式中,.edu的应放置在图案的端部:
preg_match("/^[^\s][email protected][^\s]+(.[^\s]+)*(\.edu)$/", $email);
检查了这一点
function ValidateEmail($email) {
if(filter_var($email, FILTER_VALIDATE_EMAIL) && (substr($email ,-4) == ".edu")){
return true;
}else{
return false;
}
}
@DannyBeckett:操作系统试图与'preg_match(“/^[^ \ s] + @ [^ \ s] +。[^ \ s] + $ /”,$ email);'而且他只想在最后匹配电子邮件.edu!没什么不好的! – 2013-03-06 06:24:50