首頁 > 後端開發 > php教程 > php 使用正規驗證email信箱

php 使用正規驗證email信箱

怪我咯
發布: 2023-03-14 06:30:02
原創
8530 人瀏覽過

E-mail象普通的郵件—樣,也需要地址,它與普通郵件的區別在於它是電子地址。所有在Internet之上有信箱的使用者都有自己的一個或幾個Email address,而這些Email address都是唯一的。郵件伺服器就是根據這些位址,將每封電子郵件傳送到各個使用者的信箱中,Email address就是使用者的信箱位址。就像普通郵件一樣,你能否收到你的E-mail,取決於你是否取得了正確的電子郵件地址。 —個完整的Internet郵件地址由以下兩個部分組成,格式如下:登入名稱@主機名稱.網域  中間用—個表示「在」(at)的符號「@」分開,符號的左邊是對方的登入名,右邊是完整的主機名,它由主機名稱與網域組成。其中,網域由幾個部分組成,每一部分稱為一個子網域(Subdomain),各子網域之間以圓點「.」隔開,每個子網域都會告訴使用者一些有關這台郵件伺服器的資訊。

php 正規比對郵件程式碼

1.驗證email:

 < ?php 
   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!"; 
} 
?>
登入後複製

$str = &#39;&#39;;
$isMatched = preg_match(&#39;/^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$/&#39;, $str, $matches);
var_dump($isMatched, $matches);
登入後複製

符合Email信箱格式的正規表示式

/^[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_、aaa不匹配,如果是空字符,也是匹配的,*表示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}為{起始字數,結束字數}

這個用於匹配郵箱的正則表達式,還是比較強的,功能強大,覆蓋廣泛,有用到的朋友收藏下吧。
國際網域格式如下:

網域由各國文字的特定字元集、英文字母、數字及「-」(即連字號或減號)任意組合而成,但開頭及結尾均不能含有“-”,並且“-”不能連續出現。 網域名稱中字母不分大小寫。網域最長可達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_、aaa不匹配,如果是空字符,也是匹配的,*表示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 class="brush:php;toolbar:false">"; 
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的^和$;

#

以上是php 使用正規驗證email信箱的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板