邮箱验证代码大都是不能验证一个字母的域名或一个字母的用户名,如:i@PHPfensi.com 或 i@PHPfensi.net,解决方法如下:
1,不做总长度判断,长度判断可以自己加上;2,支持.net.cn,.com.cn这样的域名后缀;3,邮箱名部分以字母或者数字开头,中间可以有“-”与“_”符号;4,域名部分以字母或者数字开头,中间可以有“-”与“_”符号;
preg_match(/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i,$email );
实例代码如下:
- /**
- * 自己修整的一个邮箱正则表达式
- * PHP粉丝网
- */
- echo '<Meta charset=utf-8 />';
- function c_email($email){
- $reg='/^([a-zA-Z0-9]{1,20})(([_-.])?([a-zA-Z0-9]{1,20}))*@([a-zA-Z0-9]{1,20})(([-_])?([a-zA-Z0-9]{1,20}))*(.[a-z]{2,4}){1,2}$/';
- if(preg_match($reg,$email))
- return true;
- return false;
- }
- $email = 'mail@lizhong.me';
- $check_result = c_email($email);
- if($check_result){
- echo '邮箱格式正确';
- }else{
- echo '邮箱格式错误';
- }
邮箱验证类,代码如下:
- <?PHP
- class Reg
- {
- public $mail;
- function __construct()
- {
- $this->mail = $_POST[mail];
- }
- function RegMail()
- {
- if(preg_match(/^[0-9a-zA-Z]+(?:[_-][a-z0-9-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*.[a-zA-Z]+$/i, $this->mail))
- {
- echo <script language='javascript'>alert('验证成功')</script>;
- }
- else
- {
- echo <script language='javascript'>alert('验证失败')</script>;
- }
- }
- }
- $r = new Reg();
- $r->RegMail();
- $strings = abc@163.com;
- if(preg_match(/^[0-9a-zA-Z]+(?:[_-][a-z0-9-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*.[a-zA-Z]+$/i,$strings))
- {
- echo验证成功!是邮箱地址。;
- }
- else
- {
- echo不是邮箱地址!;
- }
- ?>