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 相关文章推荐
IIS下配置Php+Mysql+zend的图文教程
Dec 08 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
PHP加密技术的简单实现
Sep 04 PHP
PHP单例模式详解及实例代码
Dec 21 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
基于php流程控制语句和循环控制语句(讲解)
Oct 23 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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
简单采集了yahoo的一些数据
2007/02/14 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
常用python编程模板汇总
2016/02/12 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
python sort、sort_index方法代码实例
2019/03/28 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
自荐信范文
2013/12/10 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
妇联主席先进事迹
2014/05/18 职场文书
最感人的道歉情书
2015/05/12 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
世界十大狙击步枪排行榜
2022/03/20 杂记
详解flex:1什么意思
2022/07/23 HTML / CSS