woff 發表於 2012-8-9 18:03:00

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]
查看完整版本: php正則與email