php正則與email
1.驗證email:1.
<?php
2. if (ereg(「/^({2,3}([\.]{2})?$/i; 」,$email)){
3.
echo 「Your email address is correct!」;}
4. else{
5.
echo 「Please try again!」;
6. }
7.
?>
國際域名格式如下:
域名由各國文字的特定字符集、英文字母、數字及「-」(即連字符或減號)任意組合而成, 但開頭及結尾均不能含有「-」,「-」不能連續出現 。 域名中字母不分大小寫。域名最長可達60個字節(包括後綴.com、.net、.org等)。
/^({2,3}([\.]{2})?$/i;
/內容/i 構成一個不區分大小寫的正則表達式;
^ 匹配開始
$ 匹配結束
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+)*解釋,但是不能為空,+表示一個或者為多個。
[\.] 將特殊字符(.)當成普通字符
{2,3} 匹配2個至3個英文字母,一般為com或者net等.
([\.]{2})? 匹配0個或者1個[\.]{2}(比如.com我不知道一般.com.tw部份是不是都是兩位的,如果不是請修改{2}為{起始字數,結束字數}
完美E-Mail正則表達式,附詳細講解,請大家幫忙測試一下!
2.抽取字符串中的email:
<?php
function getEmail($str) {
$pattern="/(*[-_\.]?+)*@(*[-_]?+)+[\.]{2,3}([\.]{2})?/i";//為了適合qq的數字郵箱,正則開頭作了修改
preg_match_all($pattern,$str,$emailArr);
return
$emailArr;
}
$emailstr="9999@tshopping.com.tw俺不是米vi地方就開iid郵件列表:fuyongjie@netyea.com,hh@qq.com;.;;,fuyongjie.100@yahoo.com,fu-1999@google.com";
mailArr= getEmail($emailstr);
echo "<pre>";
print_r($emailArr);
echo "</pre>";
?>
打印如下:
Array
(
=>9999@tshopping.com.tw
=> fuyongjie@netyea.com
=> hh@pchome
=> fuyongjie.100@yahoo.com
=> fu-1999@google.com
)
3.比較:第2里的正則裡沒有了第1的^和$;
頁:
[1]