// 判断某字符串是否为一个合法的邮箱地址,合法邮箱地址要求如下:
字符必须是英文或数字下划线开始
必须包含一个@
包含一个.符号
@符号在. 符号前面
不能以@或. 符号结尾
长度不能长于30

解决方案 »

  1.   

    1)Javascript实现:
    function checkEmail(form){
    re=/^[^\s]+@[^\s]+\.[^\s]+$/;
    if(re.test(form.value)){
             alert(‘符合验证’);
    }else{
         alert(‘验证失败’);
    }
    }
    (2)php实现
    function CheckMailAdr($str){
    return(eregi(“^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$“,$str));
    }
    (3)
    function validateEmail($email)
    {
        if(eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$',$email) ){
            return true;
        }else{
            return false;
        }
    }
      

  2.   

    扒Zend的public function checkEmailValid($email) {
    if ((strpos($email, '..') !== false) or
        (!preg_match('/^(.+)@([^@]+)$/', $email, $matches)))
        return false;$localPart = $matches[1];
    $hostname = $matches[2];
    if ((strlen($localPart) > 64) || (strlen($hostname) > 255))
    return false; $atext = 'a-zA-Z0-9\x21\x23\x24\x25\x26\x27\x2a\x2b\x2d\x2f\x3d\x3f\x5e\x5f\x60\x7b\x7c\x7d\x7e';
    if (preg_match('/^[' . $atext . ']+(\x2e+[' . $atext . ']+)*$/', $localPart)) {
    return true;
    }
    $noWsCtl    = '\x01-\x08\x0b\x0c\x0e-\x1f\x7f';
    $qtext      = $noWsCtl . '\x21\x23-\x5b\x5d-\x7e';
    $ws         = '\x20\x09';
    if (preg_match('/^\x22([' . $ws . $qtext . '])*[$ws]?\x22$/', $localPart)) {
    return true;
    }
    return false;
    }