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中目录,文件操作详谈
Mar 19 PHP
有关PHP性能优化的介绍
Jun 20 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
php中chdir()函数用法实例
Nov 13 PHP
php银联网页支付实现方法
Mar 04 PHP
php输出指定时间以前时间格式的方法
Mar 21 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 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
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
php 静态变量的初始化
2009/11/15 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
php解决约瑟夫环示例
2014/04/09 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
树结构之JavaScript
2017/01/24 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
详解Python进程间通信之命名管道
2017/08/28 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
如何让python的运行速度得到提升
2020/07/08 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
《水上飞机》教学反思
2014/04/10 职场文书
高中综合实践活动总结
2014/07/07 职场文书
同学会邀请函模板
2015/01/30 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库