JavaScript中电子邮件的验证

JavaScript中电子邮件的验证,javascript,Javascript,我不知道为什么正则表达式模式不起作用!我找不到任何错误!但是,当我用错误的输入运行它时,它只会跳过模式测试行并移动到下一页 <!DOCTYPE html> <html> <head> <title>Validation</title> <script> function validate() { var email=document.myform.ema

我不知道为什么正则表达式模式不起作用!我找不到任何错误!但是,当我用错误的输入运行它时,它只会跳过模式测试行并移动到下一页

<!DOCTYPE html>
<html>
<head>
    <title>Validation</title>
    <script>
        function validate()
        {
            var email=document.myform.email.value;
            var pass=document.myform.pass.value;
            var phno=document.myform.phno.value;
            if(email!="" && pass!="" && phno!="")
            {
                var emailcheck=/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
                var passcheck=/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}/;  
                var phonecheck=/^[0-9]{10}+$/;
                var result1=emailcheck.test(email);
                var result2=passcheck.test(pass);
                var result3=phonecheck.test(phno);
            }
            else
            {
                alert("Validation failed");
                return false;
            }
            if(result1 && result2 && result3)
            {
                alert("Validation Successful");
                //return true;
            }
            else
            {
                    alert("Validation Failed");
                    document.write("email should be as (xxx@gmail.com)"+"<br/>"+"password should be as (pass123)"+"<br/>"+"phone should be as (98659-57575)"+"<br/>");
                    return false;
            }
        }
    </script>
</head>

<body>
    <form name="myform" action="number.php" onsubmit="return validate()">
    Email:<input type="text" name="email"/><br/>
    Password:<input type="text" name="pass"/> <br/>
    Phone:<input type="text" name="phno"/> <br/>
    <input type="submit" value="submit"/>
    </form>
</body>
</html>

如果我提供的任何输入与模式不匹配,我预计警报验证将失败。

您的代码存在导致脚本失败的正则表达式错误。由于验证脚本失败,onsubmit将找不到验证函数,因此一切都将被破坏。 这是一个很好的行为,检查你的正则表达式与在线正则表达式测试网站,如 我认为,如果您将代码的regex部分更改为此,那么一切都将正常工作:

var emailcheck=/^[A-Za-z0-9\\\-\\.]+\@[A-Za-z0-9\\-\.]+\.[A-Za-z]{2,4}$/; var passcheck=/?=.\\d?=.[a-z]?=.[a-z]。{8,10}/; var phonecheck=/^[0-9]{10}$/; 您会注意到,我在上一个正则表达式中更改了every/with/,并删除了+,因为它是无效的。
我希望它能有所帮助。

1当你说它只是跳过了模式测试线,你是什么意思?你为什么这么想?2哪些示例输入值不起作用?如果在加载页面时检查浏览器控制台,它会返回:“SyntaxError:nothing to repeat”作为“需要将用于转义正则表达式特殊字符的反斜杠加倍”。正如我在你的代码中看到的,你有很多这样的错误。啊!我得到了输出。。。谢谢你,伙计!谢谢你的链接!这可能对我将来有所帮助:-