php中郵箱地址正則表達式實現(xiàn)與詳解
更新時間:2012年04月24日 20:20:07 作者:
本文章不但要講述了關于正則達式而且還講述了關于郵箱正則的構(gòu)成用法詳解,有需要了解的朋友可以參考一下,同時我們也提供了多種不同的郵箱驗證實例
首先附上代碼
^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$
在這段正則表達式中,“+”表示前面的字符串連續(xù)出現(xiàn)一個或多個;“^”表示下一個字符串必須出現(xiàn)在開頭,“$”表示前一個字符串必須出現(xiàn)在結(jié)尾;
“.”也就是“.”,這里“”是轉(zhuǎn)義符;“{2,3}”表示前面的字符串可以連續(xù)出現(xiàn)2-3次?!?)”表示包含的內(nèi)容必須同時出現(xiàn)在目標對象中?!癧_.0-9a-z-]”表示包含在“_”、“.”、“-”、從a到z范圍內(nèi)的字母、從0到9范圍內(nèi)的數(shù)字中的任意字符;
這樣一來,這個正則表達式可以這樣翻譯:
“下面的字符必須在開頭(^)”、“該字符必須包含在“_”、“.”、“-”、從a到z范圍內(nèi)的字母、從0到9范圍內(nèi)的數(shù)字中([_.0-9a-z-])”、“前面這個字符至少出現(xiàn)一次(+)”、@、“該字符串由一個包含在從a到z范圍內(nèi)的一個字母、從0到9范圍內(nèi)的數(shù)字中的字符開頭,后面跟至少一個包含在“-”、從a到z范圍內(nèi)任何一個字母、從0到9范圍內(nèi)任何一個數(shù)字中的字符,最后以.結(jié)束(([0-9a-z][0-9a-z-]+.))”、“前面這個字符至少出現(xiàn)一次(+)”、“從a到z范圍內(nèi)的字母出現(xiàn)2-3次,并以它結(jié)束([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;
}
域名由各國文字的特定字符集、英文字母、數(shù)字及“-”(即連字符或減號)任意組合而成, 但開頭及結(jié)尾均不能含有“-”,“-”不能連續(xù)出現(xiàn) 。 域名中字母不分大小寫。域名最長可達60個字節(jié)(包括后綴.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;
/內(nèi)容/i 構(gòu)成一個不區(qū)分大小寫的正則表達式;
^ 匹配開始
$ 匹配結(jié)束
[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個或多個英文字母或者數(shù)字
[-_]? 匹配0個或1“-”,因為“-”不能連續(xù)出現(xiàn)
[a-z0-9]+ 匹配1個或多個英文字母或者數(shù)字,因為“-”不能做為結(jié)尾
@ 必需有個有@
([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}為{起始字數(shù),結(jié)束字數(shù)}
完美E-Mail正則表達式,附詳細講解,請大家?guī)兔y試一下! 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!";
}
復制代碼 代碼如下:
^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$
在這段正則表達式中,“+”表示前面的字符串連續(xù)出現(xiàn)一個或多個;“^”表示下一個字符串必須出現(xiàn)在開頭,“$”表示前一個字符串必須出現(xiàn)在結(jié)尾;
“.”也就是“.”,這里“”是轉(zhuǎn)義符;“{2,3}”表示前面的字符串可以連續(xù)出現(xiàn)2-3次?!?)”表示包含的內(nèi)容必須同時出現(xiàn)在目標對象中?!癧_.0-9a-z-]”表示包含在“_”、“.”、“-”、從a到z范圍內(nèi)的字母、從0到9范圍內(nèi)的數(shù)字中的任意字符;
這樣一來,這個正則表達式可以這樣翻譯:
“下面的字符必須在開頭(^)”、“該字符必須包含在“_”、“.”、“-”、從a到z范圍內(nèi)的字母、從0到9范圍內(nèi)的數(shù)字中([_.0-9a-z-])”、“前面這個字符至少出現(xiàn)一次(+)”、@、“該字符串由一個包含在從a到z范圍內(nèi)的一個字母、從0到9范圍內(nèi)的數(shù)字中的字符開頭,后面跟至少一個包含在“-”、從a到z范圍內(nèi)任何一個字母、從0到9范圍內(nèi)任何一個數(shù)字中的字符,最后以.結(jié)束(([0-9a-z][0-9a-z-]+.))”、“前面這個字符至少出現(xiàn)一次(+)”、“從a到z范圍內(nèi)的字母出現(xiàn)2-3次,并以它結(jié)束([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;
}
域名由各國文字的特定字符集、英文字母、數(shù)字及“-”(即連字符或減號)任意組合而成, 但開頭及結(jié)尾均不能含有“-”,“-”不能連續(xù)出現(xiàn) 。 域名中字母不分大小寫。域名最長可達60個字節(jié)(包括后綴.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;
/內(nèi)容/i 構(gòu)成一個不區(qū)分大小寫的正則表達式;
^ 匹配開始
$ 匹配結(jié)束
[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個或多個英文字母或者數(shù)字
[-_]? 匹配0個或1“-”,因為“-”不能連續(xù)出現(xiàn)
[a-z0-9]+ 匹配1個或多個英文字母或者數(shù)字,因為“-”不能做為結(jié)尾
@ 必需有個有@
([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}為{起始字數(shù),結(jié)束字數(shù)}
完美E-Mail正則表達式,附詳細講解,請大家?guī)兔y試一下! 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!";
}
相關文章
使用PHPOffice/PHPWord實現(xiàn)讀取Word內(nèi)容
這篇文章主要為大家詳細介紹了如何使用PHPOffice/PHPWord實現(xiàn)讀取Word內(nèi)容的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-07-07