php 正規符合信箱代碼,分析的也比較詳細,希望對這方面有問題的朋友,可以看下
CODE:
1. < ?php
2. if (ereg(“/^[az]([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[- _]?[a-z0-9]+)+[.][az]{2,3}([.][az]{2})?$/i; ”,$email)){
3. echo “Your email address is correct!”;}
4. else{
5. echo “Please try again!”;
6. }
7. ?>
國際域名格式如下:
網域由各國文字的特定字元集、英文字母、數字及“-”(即連字號或減號)任意組合而成, 但開頭及結尾均不能含有“-”,“-”不能連續出現。 網域名稱中字母不分大小寫。網域最長可達60個位元組(包括後綴.com、.net、.org等)。
/^[az]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9 ]+)+[.][az]{2,3}([.][az]{2})?$/i;
/內容/i 構成一個不區分大小寫的正規表示式;
^ 配對開始
$ 匹配結束
[az] 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]+)*解釋,但是不能為空,+表示一個或為多個。
[.] 將特殊字元(.)當成普通字符
[az]{2,3} 配對2個至3個英文字母,一般為com或net等.
([.][az]{2})? 符合0個或1個[.][az]{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]+)+[.][az]{2,3}([.][az]{2})?/i";
preg_match_all($pattern,$str,$emailArr);
return $emailArr[0];
}
$emailstr = " [email protected]俺不是米vi地方就開iid郵件列表: [email protected]和[email protected] ;.;;, [email protected],fu-1999@ sina.com ";
$emailArr = getEmail($emailstr);
echo "<pre>";
print_r($emailArr);
echo "</pre>";
?>
列印如下:
Array
(
[0] =>[email protected]
[1] =>[email protected]
[2] =>[email protected]
[3] =>[email protected]
[4] =>[email protected]
)
3.比較:第2裡的正則裡沒有了第1的^和$;