首页 > 解决方案 > 在 JavaScript 中验证电子邮件

问题描述

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

<!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>

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

标签: javascript

解决方案


您的代码存在导致脚本失败的正则表达式错误。由于validate脚本失败,onsubmit找不到validate函数,所以一切都会毁了。使用像这样
的在线正则表达式测试站点检查您的正则表达式是一种很好的行为, 我认为如果您将代码的正则表达式部分更改为此,每件事都会正常工作:

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}$/;

你会注意到我已经改变了每一个/with //,并且+在最后一个正则表达式中也被删除了,因为它是无效的。
我希望它有所帮助。


推荐阅读