php正则与email

 

php正则与email

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的^和$;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值