|
復(fù)制代碼 代碼如下:
^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$
在這段正則表達(dá)式中,“+”表示前面的字符串連續(xù)出現(xiàn)一個(gè)或多個(gè);“^”表示下一個(gè)字符串必須出現(xiàn)在開頭,“$”表示前一個(gè)字符串必須出現(xiàn)在結(jié)尾;
“.”也就是“.”,這里“”是轉(zhuǎn)義符;“{2,3}”表示前面的字符串可以連續(xù)出現(xiàn)2-3次。“()”表示包含的內(nèi)容必須同時(shí)出現(xiàn)在目標(biāo)對(duì)象中。“[_.0-9a-z-]”表示包含在“_”、“.”、“-”、從a到z范圍內(nèi)的字母、從0到9范圍內(nèi)的數(shù)字中的任意字符;
這樣一來,這個(gè)正則表達(dá)式可以這樣翻譯:
“下面的字符必須在開頭(^)”、“該字符必須包含在“_”、“.”、“-”、從a到z范圍內(nèi)的字母、從0到9范圍內(nèi)的數(shù)字中([_.0-9a-z-])”、“前面這個(gè)字符至少出現(xiàn)一次(+)”、@、“該字符串由一個(gè)包含在從a到z范圍內(nèi)的一個(gè)字母、從0到9范圍內(nèi)的數(shù)字中的字符開頭,后面跟至少一個(gè)包含在“-”、從a到z范圍內(nèi)任何一個(gè)字母、從0到9范圍內(nèi)任何一個(gè)數(shù)字中的字符,最后以.結(jié)束(([0-9a-z][0-9a-z-]+.))”、“前面這個(gè)字符至少出現(xiàn)一次(+)”、“從a到z范圍內(nèi)的字母出現(xiàn)2-3次,并以它結(jié)束([a-z]{2,3}$)”
復(fù)制代碼 代碼如下:
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ù)字及“-”(即連字符或減號(hào))任意組合而成, 但開頭及結(jié)尾均不能含有“-”,“-”不能連續(xù)出現(xiàn) 。 域名中字母不分大小寫。域名最長可達(dá)60個(gè)字節(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)成一個(gè)不區(qū)分大小寫的正則表達(dá)式;
^ 匹配開始
$ 匹配結(jié)束
[a-z] E-Mail前綴必需是一個(gè)英文字母開頭
([a-z0-9]*[-_]?[a-z0-9]+)* 和_a_2、aaa11、_1_a_2匹配,和a1_、aaff_33a_、a__aa不匹配,如果是空字符,也是匹配的,*表示0個(gè)或者多個(gè)。
*表示0個(gè)或多個(gè)前面的字符.
[a-z0-9]* 匹配0個(gè)或多個(gè)英文字母或者數(shù)字
[-_]? 匹配0個(gè)或1“-”,因?yàn)椤?”不能連續(xù)出現(xiàn)
[a-z0-9]+ 匹配1個(gè)或多個(gè)英文字母或者數(shù)字,因?yàn)椤?”不能做為結(jié)尾
@ 必需有個(gè)有@
([a-z0-9]*[-_]?[a-z0-9]+)+ 見上面([a-z0-9]*[-_]?[a-z0-9]+)*解釋,但是不能為空,+表示一個(gè)或者為多個(gè)。
[.] 將特殊字符(.)當(dāng)成普通字符
[a-z]{2,3} 匹配2個(gè)至3個(gè)英文字母,一般為com或者NET等.
([.][a-z]{2})? 匹配0個(gè)或者1個(gè)[.][a-z]{2}(比如.cn等) 我不知道一般.com.cn最后部份是不是都是兩位的,如果不是請(qǐng)修改{2}為{起始字?jǐn)?shù),結(jié)束字?jǐn)?shù)}
完美E-Mail正則表達(dá)式,附詳細(xì)講解,請(qǐng)大家?guī)兔y(cè)試一下! 2.抽取字符串中的email:
復(fù)制代碼 代碼如下:
<?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的^和$;
再看實(shí)例
復(fù)制代碼 代碼如下:
function funcemail($str)//郵箱正則表達(dá)式
{
return (preg_match('/^[_.0-9a-z-a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$/',$str))?true:false;
}//驗(yàn)證方法一
$str="qbcd@126.com.cn";
preg_match("/^[0-9a-z]+@(([0-9a-z]+)[.])+[a-z]{2,3}$/",$str,$re);
print_r($re);//郵箱驗(yàn)證二
if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email)) {
echo "您的 e-mail 通過初步檢查";
}//第三種郵箱驗(yàn)證方法
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技術(shù):php中郵箱地址正則表達(dá)式實(shí)現(xiàn)與詳解,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。