邮件的正确格式为: 用户名+@+服务器名+ . +com/net/cn/org
注:1、验证时要求用户名是大小字母或小写字母
2、用户名的后面要加上@
3、@后面要加服务器的名称。
4、服务名后面要加"点"即 .
5、最后以com net cn org
javascript邮箱验证代码:
例1
代码如下 | 复制代码 |
var re=/^([a-zA-Z0-9]+[_|_|.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|_|.]?)*[a-zA-Z0-9]+.[a-zA-Z]{2,3}$/; var e=form1.email.value;//获取表单form1中email的值 if(e!=null && e.trim().length<=0){ if(!re.test(e)) { alert("Sorry,你输入的Email不合法!"); } } String.prototype.trim=function() { return this.replace(/(^s*)|(s*$)/g,""); } //去掉空字符,这个函数可以去掉左右两边的空字符 |
便例2
代码如下 | 复制代码 |
<script language="Javascript1.2"> <!-- start hiding function verifyAddress(obj) { var email = obj.email.value; var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; flag = pattern.test(email); if(flag) { alert("Your email address is correct!"); return true; } else { alert("Please try again!"); return false; } } // stop hiding --> </script> </head> <body> <form onSubmit="return verifyAddress(this);"> <input name="email" type="text"/> <input type="submit"/> </form> </body> </html> |
php邮箱验证代码:
代码如下 | 复制代码 |
function CheckEmailAddr($mailAddr){return (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$",$mailAddr)) ? false : true;}function CheckEmailAddr($mailAddr) { return (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$",$mailAddr)) ? false : true; } |
php实例2
代码如下 | 复制代码 |
< ?php if (ereg("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+",$email)){ echo "Your email address is correct!";} else{ echo "Please try again!"; } ?> |
例3
代码如下 | 复制代码 |
<?php $email="gdygdy_007@163.com"; if (preg_match("/[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-z]{2,4}/",$email,$mail)){ echo 'yes<br>'; }else{ echo 'no<br>'; } echo "$email??".$email."<>"; echo "$mail??".$mail; ?> |
构造检查email的正则表达式
在一个完整的email地址中有三个部分:
1. 用户名 (在 '@' 左边的一切)
2.'@'
3. 服务器名(就是剩下那部分)
用户名可以含有大小写字母阿拉伯数字,句号('.')减号('-')and下划线'_')。服务器名字也是符合这个规则,当然下划线除外。
现在,用户名的开始和结束都不能是句点,服务器也是这样。还有你不能有两个连续的句点他们之间至少存在一个字符,好现在我们来看一下怎么为用户名写一个匹配模式:
^[_a-zA-Z0-9-]+$
现在还不能允许句号的存在。我们把它加上:
^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$
上面的意思就是说:以至少一个规范字符(除了.)开头,后面跟着0个或者多个以点开始的字符串。
简单化一点,我们可以用eregi()取代ereg()、eregi()对大小写不敏感,我们就不需要指定两个范围 "a-z" 和 "A-Z"只需要指定一个就可以了:
^[_a-z0-9-]+(.[_a-z0-9-]+)*$
后面的服务器名字也是一样,但要去掉下划线:
^[a-z0-9-]+(.[a-z0-9-]+)*$
好。现在只需要用"@"把两部分连接:
^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$
这就是完整的email认证匹配模式了,只需要调用:
eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$",$eamil)
就可以得到是否为email了
正则表达式的其他用法
提取字符串
ereg() and eregi() 有一个特性是允许用户通过正则表达式去提取字符串的一部分(具体用法你可以阅读手册)。比如说,我们想从 path/URL 提取文件名,下面的代码就是你需要:
ereg("([^\/]*)$", $pathOrUrl, $regs);
echo $regs[1];
高级的代换
ereg_replace() 和 eregi_replace()也是非常有用的,假如我们想把所有的间隔负号都替换成逗号:
ereg_replace("[ nrt]+", ",", trim($str));
最后,我把另一串检查EMAIL的正则表达式让看文章的你来分析一下:
"^[-!#$%&'*+\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+.'.'[-!#$%&'*+\./0-9=?A-Z^_`a-z{|}~]+$