本文章不但要講述了關於正則達式而且還講述了關於郵箱正則的構成用法詳解,有需要瞭解的朋友可以參考一下,同時我們也提供了多種不同的郵箱驗證執行個體.
Regex了
| 代碼如下 |
複製代碼 |
^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$
|
在這段Regex中,“+”表示前面的字串連續出現一個或多個;“^”表示下一個字串必須出現在開頭,“$”表示前一個字串必須出現在結尾;
“.”也就是“.”,這裡“”是轉義符;“{2,3}”表示前面的字串可以連續出現2-3次。“()”表示包含的內容必須同時出現在目標對象中。“[_.0-9a-z-]”表示包含在“_”、“.”、“-”、從a到z範圍內的字母、從0到9範圍內的數字中的任一字元;
這樣一來,這個Regex可以這樣翻譯:
“下面的字元必須在開頭(^)”、“該字元必須包含在“_”、“.”、“-”、從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 構成一個不區分大小寫Regex;
^ 匹配開始
$ 匹配結束
[a-z] E-Mail首碼必需是一個英文字母開頭
([a-z0-9]*[-_]?[a-z0-9]+)* 和_a_2、aaa11、_1_a_2匹配,和a1_、aaff_33a_、a__aa不匹配,如果是Null 字元,也是匹配的,*表示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-MailRegex,附詳細講解,請大家幫忙測試一下! 2.抽取字串中的email:
| 代碼如下 |
複製代碼 |
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 ""; print_r($emailArr); echo " "; ?>列印如下: 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)//郵箱Regex { 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!"; } |
http://www.bkjia.com/PHPjc/631637.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631637.htmlTechArticle本文章不但要講述了關於正則達式而且還講述了關於郵箱正則的構成用法詳解,有需要瞭解的朋友可以參考一下,同時我們也提供了多種不...