email 正则表达式

Email正则表达式(转载整理)

1、

email正则表达式:/^[a-zA-Z0-9_\.]+@[a-zA-Z0-9-]+[\.a-zA-Z]+$/

2、根据
(1)email前缀规则:
英文26个字母、10个阿拉伯数字、点、减号或下划线组成,只能以数字或字母开头和结尾
(2)域名命名规则:
英文26个字母、10个阿拉伯数字、减号组成,只能以数字或字母开头和结尾,总共不能超过63个字符
得:
域名拆解成:(a-b.)+和a两段
<?php
class isEmail{
public function run($str){
if(!eregi("^[a-z0-9]+([._\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){2,63}[a-z0-9]+$",$str)){
return false;
}else{
return true;
}
}
}

$isEmail=new isEmail;
if($isEmail->run("a___--...s-.d@fs-d.f--d.fd.f-as-d.com")==false){
echo "email is wrong";
}
?>
3、

CODE:
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-z]{2,3}([\.][a-z]{2})?/i"; 
preg_match_all($pattern,$str,$emailArr); 
return $emailArr[0]; 

$emailstr = "俺不是米vi地方就开iid邮件列表: 和;.;;,"; 
$emailArr = getEmail($emailstr); 
echo "<pre>"; 
print_r($emailArr); 
echo "</pre>"; 
?> 
打印如下: 
Array 

[0] => 
[1] => 
[2] => 
[3] => 
[4] => 

3.比较:第2里的正则里没有了第1的^和$; 
4、

相信学过PHP的人都应该知道下面这段用于eamil校验的语句,但是真正能看懂的就不多了:

以下为引用的内容:
<?php 
if (eregi("^[_.0-z-]+@([0-z][0-z-]+.)+[a-z]{2,3}$",$email)) { 

    echo "您的 E-Mail 通过初步检查"; 


?>


在这句话里,首先是应用了一个eregi函数,这个函数还算好理解。随便找本书,就能给你一

段解释:


语法: int eregi(string pattern, string string, array [regs]); 

返回值: 整数/数组


本函数以 pattern 的规则来解析比对字符串 string。


比对结果返回的值放在数组参数 regs 之中,regs[0] 内容就是原字符串 string、regs[1]

为第一个合乎规则的字符串、regs[2] 就是第二个合乎规则的字符串,余类推。若省略参数

regs,则只是单纯地比对,找到则返回值为 true。

而不太好理解的就是前面的这段正则表达式了:^[_.0-z-]+@([0-z][0-z-]+.)+[a-z]{2,3}$ 

在这段正则表达式中,“+”表示前面的字符串连续出现一个或多个;“^”表示下一个字符串

必须出现在开头,“$”表示前一个字符串必须出现在结尾;


“.”也就是“.”,这里“”是转义符;“{2,3}”表示前面的字符串可以连续出现2-3次。“()”

表示包含的内容必须同时出现在目标对象中。“[_.0-z-]”表示包含在“_”、“.”、

“-”、从a到z范围内的字母、从0到9范围内的数字中的任意字符;


这样一来,这个正则表达式可以这样翻译: 

“下面的字符必须在开头(^)”、“该字符必须包含在“_”、“.”、“-”、从a到z范围内

的字母、从0到9范围内的数字中([_.0-z-])”、“前面这个字符至少出现一次(+)”、

@、“该字符串由一个包含在从a到z范围内的一个字母、从0到9范围内的数字中的字符开头,

后面跟至少一个包含在“-”、从a到z范围内任何一个字母、从0到9范围内任何一个数字中的

字符,最后以.结束(([0-z][0-z-]+.))”、“前面这个字符至少出现一次(+)”、“从a

到z范围内的字母出现2-3次,并以它结束([a-z]{2,3}$)” 。很繁杂,正因为这样,人们才使

用正则表达式。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值