使用js进行电子邮件验证

时间:2014-09-10 05:21:18

标签: javascript

我必须进行电子邮件验证,确认电子邮件地址必须以字符串后跟“@”开头,然后是另一个带有Javascript的字符串。

有人能告诉我怎么样?

我使用了这段代码,但如果我只使用点符号而不是每个字符都会给我一个错误。

var email=document.forms["subscriptionForm"]["email"].value;
var atCharacter = email.indexOf("@"); 
var dotCharacterAfterAt = email.indexOf('.', atCharacter + 1); 
var dotLastCharacter=email.indexOf('.', atCharacter - 1);
var dotPosition=email.lastIndexOf(".");

if (atCharacter < 1 || dotPosition < atCharacter+2 || dotPosition + 2 >= email.length) {/* I got this code from http://www.w3schools.com/js/js_form_validation.asp */
    alert("Incorrect E-Mail address");
    return false;
}
    if (email[0] == '.'){
    alert("You can't enter a dot character as a first character")
    return false
    }

    if (email==null || email=="") { 
        alert("E-Mail must be filled out !");
        return false;   
    } 
    if(atCharacter + 1 == dotCharacterAfterAt){
        alert("You must enter a string after the @ sign");
        return false;
    }

    if (atCharacter - 1 == dotLastCharacter){
        alert("You must not enter a string before the @ sign in your address"); 
        return false;
    }

    if (dotPosition == email.length - 1) {
        alert("You must not enter a dot as a last character in your address");/* an error will occur and tells you that you must not enter a "." character as a last character in your address*/
        return false;
    }

4 个答案:

答案 0 :(得分:0)

var email = 'string@string';

/[^@]+@[^@]+/.test(email); // returns true;

上述内容完全符合您的要求。但是,我不认为您提出的问题足以验证电子邮件地址。我建议只使用validator库,如下所示:

<script type="text/javascript" src="validator.min.js"></script>
<script type="text/javascript">
  validator.isEmail('foo@bar.com'); //=> true
</script>

这个库不仅仅是一个你可能会觉得有用的电子邮件验证。

答案 1 :(得分:0)

var email_pat=/^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$/;

        //id is the email text box id
        var val=$('#'+id).val();
        if(val.match(email_pat)==null && val!='')
            $('#'+id).addClass('error');

这应该有用。

答案 2 :(得分:0)

尝试这段简单的代码:

var email = prompt('Enter your Email');
var re = /[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}/igm;
if (email == '' || !re.test(email))
{
    alert('Invalid email address.');
}
else {
    alert('Thank You, the email is valid!');
}

<强> DEMO here

答案 3 :(得分:-1)

对于在其中间某处只包含一个@的任何字符串,这将返回true:

function could_be_email_address(email) {
    return email.split('@').length >= 2;
}

老实说,这就是你需要做的一切。有效的电子邮件地址可以在RFC @之前包含任何内容:

  

本地部分必须仅由指定的主机解释和分配语义      域名的一部分。

http://tools.ietf.org/html/rfc5321

之后的部分甚至不需要.。所以,尽管这是正确的答案,但这是正确的答案。

有关详细信息,请http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/