郵箱驗證代碼大都是不能驗證一個字母的域名或一個字母的用戶名,如:[email protected] 或 [email protected] 。解決方法如下:
1,不做總長度判斷,長度判斷可以自己加上;
2,支持.net.cn,.com.cn這樣的域名後綴;
3,郵箱名部分以字母或者數字開頭,中間可以有“-”與“_”符號;
4,域名部分以字母或者數字開頭,中間可以有“-”與“_”符號;
PHP 郵箱驗證正則表達式
preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email );
實例
代碼如下 復制代碼/**
* 自己修整的一個郵箱正則表達式
* 瓊台博客
*/
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 = '[email protected]';
$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 = "[email protected]";
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"不是郵箱地址!";
}
?>