完美的Email检测函数(正则匹配)
参考了"Yahoo"、
"Hotmail"、
"Gmail"、
"网易163邮箱"、
"网易126邮箱"、
"搜狐邮箱"、
"新浪邮箱"、
"TOM免费邮箱"、
"QQ邮箱"、
"亿邮"、
"21CN免费邮箱"等邮箱的
用户名命名规则,
结合域名构成规则,
现写邮箱的检测函数如下,并含大量检测程序,以助说明,主要是正则匹配问题。
看了大量检测Email的正则匹配,没一个很完善的,包裹Discuz!
用户名命名规则:
开头必为数字或字母,中间可含"_"、"-"(搜狐邮箱)、"."(Gmail),长度32
域名构成规则:
开头和结尾必为数字或字母,中间可含"-",长度32,最多4级域名,顶级域名又2至4个字母组成,(如:cn、com、name)
演示:
http://retidy.com/email/checkEmail.php
代码:
<?php
/**
* Site checkEmail.php
*
* @author retidy <[email="retidy@163.com"]retidy@163.com[/email]>
* @version $Id 14时20分03秒 2005年12月11日 星期日 $
*
* @IP 219.145.62.91
* @Address 陕西省西安市 ADSL
*
*
*/
function checkEmail($str)
{
if (eregi("^[0-9a-z][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}[0-9a-z]\.){1,4}[a-z]{2,4}$", $str))
return true;
else
return false;
}
$str = [email="'retidy@retidy.com'"]'retidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 标准Email!\n<br><br>\n";
$str = [email="'retsdddddddddddddddddddddd3333333333dddddddddsddddddddddddddsdidy@retidy.com'"]'retsdddddddddddddddddddddd3333333333dddddddddsddddddddddddddsdidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名长!\n<br><br>\n";
$str = [email="'_retidy@retidy.com'"]'_retidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名开头必为字母或数字!\n<br><br>\n";
$str = [email="'.retidy@retidy.com'"]'.retidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名开头必为字母或数字!\n<br><br>\n";
$str = [email="'5retidy@retidy.com'"]'5retidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名开头必为字母或数字!\n<br><br>\n";
$str = 're\tidy@retidy.com';
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名只能由数字、字母、'.'、'-'和'_'组成!\n<br><br>\n";
$str = [email="'re#tidy@retidy.com'"]'re#tidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名只能由数字、字母、'.'、'-'和'_'组成!\n<br><br>\n";
$str = [email="'re/tidy@retidy.com'"]'re/tidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名只能由数字、字母、'.'、'-'和'_'组成!\n<br><br>\n";
$str = [email="'re.tidy@retidy.com'"]'re.tidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名只能由数字、字母、'.'、'-'和'_'组成!\n<br><br>\n";
$str = [email="'re-tidy@retidy.com'"]'re-tidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名只能由数字、字母、'.'、'-'和'_'组成!\n<br><br>\n";
$str = [email="'re_tidy@retidy.com'"]'re_tidy@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名只能由数字、字母、'.'、'-'和'_'组成!\n<br><br>\n";
$str = 'retidy\retidy.com';
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名和域名只能由一个[email="'@'"]'@'[/email]隔开!\n<br><br>\n";
$str = 'retidy#retidy.com';
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名和域名只能由一个[email="'@'"]'@'[/email]隔开!\n<br><br>\n";
$str = 'retidy/retidy.com';
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名和域名只能由一个[email="'@'"]'@'[/email]隔开!\n<br><br>\n";
$str = [email="'retidy@@retidy.com'"]'retidy@@retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 用户名和域名只能由一个[email="'@'"]'@'[/email]隔开!\n<br><br>\n";
$str = [email="'retidy@retidy4555555555555555222ssssssssssssffffffffffffffffffffffff.com'"]'retidy@retidy4555555555555555222ssssssssssssffffffffffffffffffffffff.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 网址长!\n<br><br>\n";
$str = [email="'retidy@retidy.retidy.retidy.com'"]'retidy@retidy.retidy.retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 最多三级域名!\n<br><br>\n";
$str = [email="'retidy@retidy.retidy.retidy.retidy.retidy.com'"]'retidy@retidy.retidy.retidy.retidy.retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 最多三级域名!\n<br><br>\n";
$str = [email="'retidy@retidy.comcn'"]'retidy@retidy.comcn'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 顶级域名最多4个字母!\n<br><br>\n";
$str = [email="'retidy@-retidy.com'"]'retidy@-retidy.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名开头或结尾为数字或字母!\n<br><br>\n";
$str = [email="'retidy@retidy-.com'"]'retidy@retidy-.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名开头或结尾必为数字或字母!\n<br><br>\n";
$str = [email="'retidy@163.com'"]'retidy@1\63.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名只能由数字、字母和'-'组成!\n<br><br>\n";
$str = [email="'retidy@1#63.com'"]'retidy@1#63.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名只能由数字、字母和'-'组成!\n<br><br>\n";
$str = [email="'retidy@1/63.com'"]'retidy@1/63.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名只能由数字、字母和'-'组成!\n<br><br>\n";
$str = [email="'retidy@1-63.com'"]'retidy@1-63.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名只能由数字、字母和'-'组成!\n<br><br>\n";
$str = [email="'retidy@1_63.com'"]'retidy@1_63.com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名只能由数字、字母和'-'组成!\n<br><br>\n";
$str = [email="'retidy@retidycom'"]'retidy@retidy\com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名间只能由一个'.'隔开!\n<br><br>\n";
$str = [email="'retidy@retidy#com'"]'retidy@retidy#com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名间只能由一个'.'隔开!\n<br><br>\n";
$str = [email="'retidy@retidy/com'"]'retidy@retidy/com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
echo " 域名间只能由一个'.'隔开!\n<br><br>\n";
$str = [email="'retidy@retidy..com'"]'retidy@retidy..com'[/email];
if(checkEmail($str) )
echo $str." is TRUE!\n<br>\n";
else
echo $str." is FALSE!\n<br>\n";
?>
演示:
http://retidy.com/email/checkEmail.php
下载:
http://retidy.com/email/checkEmail.zip
此外我还写了一个邮箱登陆程序,比hao123.com更强的邮箱登陆程序(一次可登陆多个邮箱),不同网站的多个邮箱,一次登完!
演示:
http://retidy.com/email/
同时可以登多个邮箱,太方便了,原代码可以向我索取。
.