php中邮箱地址正则表达式实现与详解


Posted in PHP onApril 24, 2012

首先附上代码

^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$

在这段正则表达式中,“+”表示前面的字符串连续出现一个或多个;“^”表示下一个字符串必须出现在开头,“$”表示前一个字符串必须出现在结尾;
“.”也就是“.”,这里“”是转义符;“{2,3}”表示前面的字符串可以连续出现2-3次。“()”表示包含的内容必须同时出现在目标对象中。“[_.0-9a-z-]”表示包含在“_”、“.”、“-”、从a到z范围内的字母、从0到9范围内的数字中的任意字符;
这样一来,这个正则表达式可以这样翻译:
“下面的字符必须在开头(^)”、“该字符必须包含在“_”、“.”、“-”、从a到z范围内的字母、从0到9范围内的数字中([_.0-9a-z-])”、“前面这个字符至少出现一次(+)”、@、“该字符串由一个包含在从a到z范围内的一个字母、从0到9范围内的数字中的字符开头,后面跟至少一个包含在“-”、从a到z范围内任何一个字母、从0到9范围内任何一个数字中的字符,最后以.结束(([0-9a-z][0-9a-z-]+.))”、“前面这个字符至少出现一次(+)”、“从a到z范围内的字母出现2-3次,并以它结束([a-z]{2,3}$)”
function is_valid_email($email, $test_mx = false) 
{ 
if(eregi("^([_a-z0-9-]+)(.[_a-z0-9-]+)*@([a-z0-9-]+)(.[a-z0-9-]+)*(.[a-z]{2,4})[ wind_phpcode_0 ]quot;, $email)) 
if($test_mx) 
{ 
list($username, $domain) = split("@", $email); 
return getmxrr($domain, $mxrecords); 
} 
else 
return true; 
else 
return false; 
}

域名由各国文字的特定字符集、英文字母、数字及“-”(即连字符或减号)任意组合而成, 但开头及结尾均不能含有“-”,“-”不能连续出现 。 域名中字母不分大小写。域名最长可达60个字节(包括后缀.com、.net、.org等)。
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i;
/内容/i 构成一个不区分大小写的正则表达式;
^ 匹配开始

$ 匹配结束

[a-z] E-Mail前缀必需是一个英文字母开头

([a-z0-9]*[-_]?[a-z0-9]+)* 和_a_2、aaa11、_1_a_2匹配,和a1_、aaff_33a_、a__aa不匹配,如果是空字符,也是匹配的,*表示0个或者多个。

*表示0个或多个前面的字符.

[a-z0-9]* 匹配0个或多个英文字母或者数字

[-_]? 匹配0个或1“-”,因为“-”不能连续出现

[a-z0-9]+ 匹配1个或多个英文字母或者数字,因为“-”不能做为结尾

@ 必需有个有@

([a-z0-9]*[-_]?[a-z0-9]+)+ 见上面([a-z0-9]*[-_]?[a-z0-9]+)*解释,但是不能为空,+表示一个或者为多个。

[.] 将特殊字符(.)当成普通字符

[a-z]{2,3} 匹配2个至3个英文字母,一般为com或者net等.

([.][a-z]{2})? 匹配0个或者1个[.][a-z]{2}(比如.cn等) 我不知道一般.com.cn最后部份是不是都是两位的,如果不是请修改{2}为{起始字数,结束字数}

完美E-Mail正则表达式,附详细讲解,请大家帮忙测试一下! 2.抽取字符串中的email:

<?php 
function getEmail($str) { 
$pattern = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i"; 
preg_match_all($pattern,$str,$emailArr); 
return $emailArr[0]; 
} 
$emailstr = "9999@qq.com.cn俺不是米vi地方就开iid邮件列表:fuyongjie@163.com和hh@qq.com;.;;,fuyongjie.100@yahoo.com,fu-1999@sina.com"; 
$emailArr = getEmail($emailstr); 
echo "<pre>"; 
print_r($emailArr); 
echo "</pre>"; 
?>打印如下: 
Array 
( 
[0] =>9999@qq.com.cn 
[1] =>fuyongjie@163.com 
[2] =>hh@qq.com 
[3] =>fuyongjie.100@yahoo.com 
[4] =>fu-1999@sina.com 
)3.比较:第2里的正则里没有了第1的^和$;

再看实例
function funcemail($str)//邮箱正则表达式 
{ 
return (preg_match('/^[_.0-9a-z-a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$/',$str))?true:false; 
}//验证方法一 
$str="qbcd@126.com.cn"; 
preg_match("/^[0-9a-z]+@(([0-9a-z]+)[.])+[a-z]{2,3}$/",$str,$re); 
print_r($re);//邮箱验证二 
if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email)) { 
echo "您的 e-mail 通过初步检查"; 
}//第三种邮箱验证方法 if (ereg("/^[a-z]([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i; ",$email)){ 
echo "your email address is correct!";} 

 else{ 
echo "please try again!"; 
}
PHP 相关文章推荐
通过对服务器端特性的配置加强php的安全
Oct 09 PHP
PHP调用MySQL的存储过程的实现代码
Aug 12 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
php 生成唯一id的几种解决方法
Mar 08 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
typecho插件编写教程(一):Hello World
May 28 PHP
PHP导出Excel实例讲解
Jan 24 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
PHP超全局变量实现原理及代码解析
Sep 01 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 #PHP
php 多关键字 高亮显示实现代码
Apr 23 #PHP
php入门之连接mysql数据库的一个类
Apr 21 #PHP
洪恩在线成语词典小偷程序php版
Apr 20 #PHP
php 文件上传实例代码
Apr 19 #PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 #PHP
php和mysql中uft-8中文编码乱码的几种解决办法
Apr 19 #PHP
You might like
Session保存到数据库的php类分享
2011/10/24 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
javascript下数值型比较难点说明
2010/06/07 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
关于js datetime的那点事
2011/11/15 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
Python实现模拟登录及表单提交的方法
2015/07/25 Python
python实现聚类算法原理
2018/02/12 Python
设置python3为默认python的方法
2018/10/31 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
pandas取出重复数据的方法
2019/07/04 Python
pycharm 安装JPype的教程
2019/08/08 Python
python手写均值滤波
2020/02/19 Python
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
英语演讲稿范文
2014/01/03 职场文书
企业宣传方案
2014/03/04 职场文书
培训协议书范本
2014/04/22 职场文书
搞笑车尾标语
2014/06/23 职场文书
法学专业求职信
2014/07/15 职场文书
小学教师师德整改措施
2014/09/29 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
MySQL一些常用高级SQL语句
2021/07/03 MySQL