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 相关文章推荐
使用 MySQL Date/Time 类型
Mar 26 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
Aug 16 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
Apr 09 PHP
PHP导入导出Excel代码
Jul 07 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 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网站的几个实用要点
2014/12/30 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
php自动加载代码实例详解
2021/02/26 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
简单的JavaScript互斥锁分享
2014/02/02 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
Python读写文件方法总结
2015/06/09 Python
python套接字流重定向实例汇总
2016/03/03 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
python实现可逆简单的加密算法
2019/03/22 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
python字符串的拼接方法总结
2019/11/18 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
了解一下python内建模块collections
2020/09/07 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
用友笔试题目
2016/10/25 面试题
大一学生假期实习的自我评价
2013/10/12 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
会计求职自荐信
2014/06/20 职场文书
毕业论文致谢词
2015/05/14 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
一行Python命令实现批量加水印
2022/04/07 Python