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代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP源代码数组统计count分析
Aug 02 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
ThinkPHP的模版中调用session数据的方法
Jul 01 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
php的4种常见运行方式
Mar 20 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
Yii框架安装简明教程
May 15 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
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
JS中style属性
2006/10/11 Javascript
js window.event对象详尽解析
2009/02/17 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
python如何压缩新文件到已有ZIP文件
2018/03/14 Python
python list转置和前后反转的例子
2019/08/26 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
python推导式的使用方法实例
2021/02/28 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
仓库主管的岗位职责
2013/12/04 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
节能减耗标语
2014/06/21 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
委托书格式要求
2015/01/28 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server