php邮箱地址正则表达式实现与详解

本文章不但要讲述了关于正则达式而且还讲述了关于邮箱正则的构成用法详解,有需要了解的朋友可以参考一下,同时我们也提供了多种不同的邮箱验证实例.
正则表达式了

^[_.0-9a-z-][email protected]([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 = "[email protected]俺不是米 http://www.hzhuti.com/nokia/5235/ vi地方就开iid邮件列表:[email protected]和[email protected];.;;,[email protected],[email protected]";
$emailArr = getEmail($emailstr);
echo "<pre>";
print_r($emailArr);
echo "</pre>";
?>打印如下:
Array
(
[0] =>[email protected]
[1] =>[email protected]
[2] =>[email protected]
[3] =>[email protected]
[4] =>[email protected]
)3.比较:第2里的正则里没有了第1的^和$;

再看实例

代码如下 复制代码 
function funcemail($str)//邮箱正则表达式
{
 return (preg_match(‘/^[_.0-9a-z-a-z-][email protected]([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$/‘,$str))?true:false;
}//验证方法一

$str="[email protected]";
preg_match("/^[0-9a-z][email protected](([0-9a-z]+)[.])+[a-z]{2,3}$/",$str,$re);
print_r($re);//邮箱验证二

if (eregi("^[_.0-9a-z-][email protected]([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!"; 
 }

时间: 2024-10-24 22:15:23

php邮箱地址正则表达式实现与详解的相关文章

企业邮箱迁移、搬家功能详解

邮件系统搬迁功能,作为使用企业邮箱服务的公司来说,提到企业邮箱搬迁(搬家)都非常谨慎,担心是否容易出现问题,那么,如何搬迁才能更安全. 例如,某公司原来使用自建邮局或其他运营商的企业邮箱,有[email protected].[email protected] begood.com两个员工,现在转用TOM企业邮箱,还希望使用[email protected].[email protected]这两个帐号,且保留曾经已收到的邮件,则通过TOM企业邮箱技术可以实现.同时,员工a和b无需做任何额外操作

Jmeter 正则表达式提取器详解(Regular Expression Exactor)

Jmeter 正则表达式提取器详解(Regular Expression Exactor) Name(名称):随意设置,最好有业务意义. Comments(注释):随意设置,可以为空 Apply to(应用范围): Main samples and sub-samples:匹配范围包括当前父取样器并覆盖至子取样器. Main samples only:只匹配当前父取样器 Sub-samples only:仅匹配子取样器 Jmeter Variable Name to use:支持对Jemter变

php正则表达式以及正则函数详解

php正则表达式以及正则函数详解 发布时间: 2012-03-21 浏览次数:21493 分类: PHP教程 正则表达式是php中一个非常重要的知识点,通常用来查找和替换字符串,最常用的就是验证用户输入的信息格式是否正确,如邮件格式.电话格式等等.还有比如采集器之类的软件中,正则也是必用不可! 现在开始来学习正则表达式的基本语法: 1.“/”是定界符,“/”定界符之间的部分就是将要在目标对象中进行匹配的模式.同时为了正则更加灵活,引入了元字符,即“+”, “*”,以及 “?”. (1)“+”元字

[转]notepad++正则表达式替换字符串详解

原文:http://blog.csdn.net/qinboecjtu/article/details/6035028 正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率. EditPlus的查找,替换,文件中查找支持以下的正则表达式: 表达式 说明 /t 制表符. /n 新行. . 匹配任意字符. | 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "

基础正则表达式和fgrep详解

[grep/ egrep] 语法: grep [-cinvABC] 'word'filename -c :打印符合要求的行数 -i :忽略大小写 -n :在输出符合要求的行的同时连同行号一起输出 -v :打印不符合要求的行 -A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行 -B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行 -C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行 #grep -A 2 halt /etc/

小贞贞jmeter关于正则表达式提取器详解

jmeter在做关联时,经常用到的是通过后置处理器中的正则表达式提取器去获取响应数据中的动态数据 详细讲解如下: 1.创建 2.页面元素详解--Apply to 正则表达式的匹配范围 默认是:仅主的取样器请求 Main sample and sub-samples:主请求和子请求,子请求一般为请求重定向跳转后的请求 Sub-samples only:仅子请求 JMeter Variable Name to use:可直接填写变量名,即从一个变量的值中去匹配 ,该场景可用于需要多次匹配才能匹配到想

正则表达式的用法详解(字符判读的利器)

- (BOOL)validateNumber:(NSString *) textString { NSString* [email protected]"^[0-9]+$"; NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number]; return [numberPre evaluateWithObject:textString]; } 其中下述语句就是一

身份证号码的正则表达式及验证详解(JavaScript,Regex)

简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案. 身份证号码说明 居民身份证号码,正确.正式的称谓应该是"公民身份号码".根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 以北京市朝阳区一女性身份证号码为

163vip邮箱注册及登陆方法详解,一分钟秒懂!

高效办公,缺了邮箱可不行,163vip邮箱的注册及登陆方法是什么呢?一分钟!用吃一片厚切牛舌的时间带你秒懂!注册 1.在百度搜索TOMvip邮箱,点击进入2.点击屏幕右侧的"立即注册按钮"3.选择套餐以及使用年限4.依次设置用户名.密码.再次输入密码.手机号.验证码,点击立即注册即可 登陆1. 同样的方法,在百度搜索TOMvip邮箱,点击进入2. 在屏幕右侧输入用户名.密码,点击登陆即可 原文地址:http://blog.51cto.com/14159773/2343094