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中查询SQL Server或Sybase时TEXT字段被截断的解决方法
Mar 10 PHP
php 上传功能实例代码
Apr 13 PHP
php学习笔记 数组的常用函数
Jun 13 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
PHP表单验证内容是否为空的实现代码
Nov 14 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
PHP计算近1年的所有月份
Mar 13 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
php探针不显示内存解决方法
Sep 17 PHP
关于laravel 日志写入失败问题汇总
Oct 17 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
php中的mongodb select常用操作代码示例
2014/09/06 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
python中使用psutil查看内存占用的情况
2018/06/11 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
python类共享变量操作
2020/09/03 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
小班开学寄语
2014/04/04 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
经费申请报告
2015/05/15 职场文书
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python