使用 JavaScript 进行电子邮件验证

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13748770/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 12:48:34  来源:igfitidea点击:

Email Validation with JavaScript

javascript

提问by Ted Beeney

Possible Duplicate:
Validate email address in Javascript?

可能重复:
在 Javascript 中验证电子邮件地址?

This is my first post and I have a small issue. I'm trying to validate an email address on a form, but with no luck. I found this snippet on the internet but it doesn't seem to be working. I'm using Javascript at the moment to validate it. I don't usually use JS, so any help would be appreciated.

这是我的第一篇文章,我有一个小问题。我正在尝试验证表单上的电子邮件地址,但没有成功。我在互联网上找到了这个片段,但它似乎不起作用。我目前正在使用 Javascript 来验证它。我通常不使用 JS,所以任何帮助将不胜感激。

<script type="text/javascript">
    function ValidateEmail(inputText)  
    {  
       var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;  
       if(inputText.value.match(mailformat))  
       {  
           document.forms.emailform();  
           return true;  
       }  
       else  
       {  
           alert("You have entered an invalid email address!");  
           document.forms.emailform();  
           return false;  
       }  
    }  

<?php
    $addemail .= '

        <form method="post" action="cart2.php" name="emailform" onsubmit="return validateEmail">
        ';
    $addemail .= '
            E-mail Address: <input type="text" name="email" value="'.$row6['email'].'" size="19" /><input type="hidden" name="cartid" value="'.$cart.'" />';
        if ( $emailerror != '' )
            {
                $addemail .= '<img src="images/email_error.png" width="16" height="16" hspace="4" alt="E-mail Error" />';
            }
        $addemail .= '
            <input type="image" name="Add E-mail Address" alt="Add E-mail Address" src="images/addemail.gif" style="vertical-align:middle" />
        </form>
    ';
    if ( $row6['email'] == '' )
        {
            $emailpresent = 0;
        }
    else
        {
            $emailpresent = 1;
        }
}
        $addemail .= '
                </td>
            </tr>
        ';
}

?>

回答by Snps

Look at this example of how it can be done in Javascript:

看看这个如何在 Javascript 中完成的例子:

<html>

<head>
<script type="text/javascript">
<!--
function validateEmail() {
    var emailText = document.getElementById('email').value;
    var pattern = /^[a-zA-Z0-9\-_]+(\.[a-zA-Z0-9\-_]+)*@[a-z0-9]+(\-[a-z0-9]+)*(\.[a-z0-9]+(\-[a-z0-9]+)*)*\.[a-z]{2,4}$/;
    if (pattern.test(emailText)) {
        return true;
    } else {
        alert('Bad email address: ' + emailText);
        return false;
    }
}

window.onload = function() {
    document.getElementById('email_form').onsubmit = validateEmail;
}
</script>

</head>
<body>

<form id="email_form">
<input type="text" id="email">
<input type="submit">
</form>

</body>
</html>


Edit:


编辑:

If you are sure that the users of your web page are using HTML5compatible browsers you can use the following neater example for the same purpose:

如果您确定您的网页用户使用的是HTML5兼容的浏览器,您可以使用以下更简洁的示例来实现相同的目的:

<!DOCTYPE html>

<html>
    <body>
        <form>
            <input type="email" pattern="^[a-zA-Z0-9\-_]+(\.[a-zA-Z0-9\-_]+)*@[a-z0-9]+(\-[a-z0-9]+)*(\.[a-z0-9]+(\-[a-z0-9]+)*)*\.[a-z]{2,4}$">
            <input type="submit">
        </form>
    </body>
</html>

回答by Neil

onsubmit="return validateEmail()"

You must add parentheses after validateEmail in order to call it or it will assume you're trying to return a method.

您必须在 validateEmail 之后添加括号才能调用它,否则它会假设您正在尝试返回一个方法。