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 PDO中文乱码解决办法
Jul 20 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
关于php循环跳出的问题
Jul 01 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
如何让CI框架支持service层
Oct 29 PHP
php生成html文件方法总结
Dec 01 PHP
php实现转换ubb代码的方法
Jun 18 PHP
smarty简单应用实例
Nov 03 PHP
php模拟post上传图片实现代码
Jun 24 PHP
php批量删除操作代码分享
Feb 26 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 PHP
Mac系统下安装PHP Xdebug
Mar 30 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巧获服务器端信息
2006/12/06 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
php实现的通用图片处理类
2015/03/24 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
PHP7 windows支持
2021/03/09 PHP
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
Python import与from import使用及区别介绍
2018/09/06 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
Python中bisect的用法及示例详解
2020/07/20 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
制定岗位职责的原则
2013/11/08 职场文书
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
办公室秘书自我鉴定
2014/01/18 职场文书
安全标准化实施方案
2014/02/20 职场文书
老龙头导游词
2015/02/11 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python