1.验证email:
   1. < ?php
   
2.    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)){
   
3.               echo “Your email address is correct!”;}
   
4.    else{
   
5.               echo “Please try again!”;
   
6.       }
   
7. ?>

国际域名格式如下:    
          域名由各国文字的特定字符集、英文字母、数字及“
-”(即连字符或减号)任意组合而成,   但开头及结尾均不能含有“-”,“-”不能连续出现   。   域名中字母不分大小写。域名最长可达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_、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]+)*解释,但是不能为空,+表示一个或者为多个。  
  [\
.]   将特殊字符(.)当成普通字符  
  [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-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";//为了适合qq的数字邮箱,正则开头作了修改
        
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>";
    
print_r($emailArr);
    
echo "</pre>";
?>

打印如下:

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的^和$;