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

正则表达式了

 代码如下 复制代码
^[_.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!";
 }

时间: 2024-08-19 22:12:45

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

php中邮箱地址正则表达式实现与详解_php技巧

首先附上代码 复制代码 代码如下: ^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$ 在这段正则表达式中,"+"表示前面的字符串连续出现一个或多个:"^"表示下一个字符串必须出现在开头,"$"表示前一个字符串必须出现在结尾: "."也就是".",这里""是转义符:"{2,3}"表示前面的字符串可以连续出现2-3次.&quo

比较正宗的验证邮箱的正则表达式js代码详解_正则表达式

fuchangxi的正则: 复制代码 代码如下: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ 开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-.然后是点"."和单词字符和-的组合,可以有一个或者多个组合. 复制代码 代码如下: <script type="text/javascript"> function isEmail(str){ var reg =

验证邮箱的正则表达式js代码详解

fuchangxi的正则:  代码如下 复制代码  /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ 开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-.然后是点"."和单词字符和-的组合,可以有一个或者多个组合.  代码如下 复制代码  <script type="text/javascript">  function isEmail(str){   var r

比较正宗的验证邮箱的正则表达式js代码详解

fuchangxi的正则: 复制代码 代码如下: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ 开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-.然后是点"."和单词字符和-的组合,可以有一个或者多个组合. 复制代码 代码如下: <script type="text/javascript"> function isEmail(str){ var reg =

表单验证正则表达式实例代码详解_javascript技巧

表单验证正则表达式具体内容如下所示: 首先给大家解释一些符号相关的意义      1.  /^$/ 这个是个通用的格式.          ^ 匹配输入字符串的开始位置:$匹配输入字符串的结束位置      2. 里面输入需要实现的功能.         * 匹配前面的子表达式零次或多次:        + 匹配前面的子表达式一次或多次:        ?匹配前面的子表达式零次或一次:        \d  匹配一个数字字符,等价于[0-9] 下面通过一段代码给大家分析表单验证正则表达式,具体代

关于日期正则表达式的思路详解

1        概述 首先需要说明的一点,无论是Winform,还是Webform,都有很成熟的日历控件,无论从易用性还是可扩展性上看,日期的选择和校验还是用日历控件来实现比较好. 前几天在CSDN多个版块看到需要日期正则的帖子,所以整理了这篇文章,和大家一起讨论交流,如有遗漏或错误的地方,还请大家指正. 日期正则一般是对格式有要求,且数据不是直接由用户输入时使用.因应用场景的不同,写出的正则也不同,复杂程度也自然不同.正则的书写需要根据具体情况具体分析,一个基本原则就是:只写合适的,不写复杂

java-JAVA正则表达式疑问求详解

问题描述 JAVA正则表达式疑问求详解 正则表达式<[^>]什么意思.. [^>]我知道 左边加个<不太理解为什么匹配了>左边的<和一个字符 解决方案 先找到<符号,然后要求紧跟后面的字符不是>符号这样找到的就是结果. 解决方案二: Java正则表达式详解Java 正则表达式详解Java正则表达式详解 解决方案三: 我一直以为^只能做开始的意思. 解决方案四: 先找到<符号,然后要求紧跟后面的字符不是>符号 这样找到的就是结果.

javascript类型系统_正则表达式RegExp类型详解_javascript技巧

前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,使用正则表达式可以进行强大的模式匹配和文本检索与替换.本文将介绍正则表达式的RegExp对象,以及正则表达式涉及 到的属性和方法 对象 javascript中的正则表达式用RegExp对象表示,有两种写法:一种是字面量写法:另一种是构造函数写法 Perl写法 正则表达式字面量写法,又叫Perl写法,因为javascript的正则表达式特性

php邮箱地址正则表达式验证_php技巧

我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用"正则表达式"(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有的还能分解出用户名和域名.现在用PHP语言实现一下电子邮件地址验证程序,用的是PHP正则表达式库. 源代码如下: <?php header ( "Content-Type: text/html; charset=UTF-8" ); $reply = ""; if