用JavaScript验证电子邮件

时间:2019-07-01 18:50:47

标签: 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>

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

1 个答案:

答案 0 :(得分:1)

您的代码中存在正则表达式错误,导致脚本失败。由于validate脚本失败,onsubmit无法找到validate函数,因此所有内容都会被破坏。
通过this one等在线正则表达式测试网站来检查您的正则表达式是一种好习惯 我认为,如果将代码的正则表达式部分更改为此,则一切都会正常工作:

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

您会注意到,我已将/的每个//更改为+,并在最后一个正则表达式中删除了window.onload = function () { var dataPoints = []; var chart = new CanvasJS.Chart("chartContainer",{ title:{ text:"grafik" }, data: [{ type: "line", dataPoints : dataPoints, }], axisX:{ title: "Frekvencija", }, axisY:{ title: "Amplituda", }, }); $.ajax({ url:'http://localhost/nikola/analiza.json', dataType:'json', type:'get', cache:false, success:function(data){ for (var i = 0 ; i <1 ; i++) { var text = data[i].analiza; var obj = JSON.parse(text); //console.log(text); for (var j =0 ; j < obj.length; j++) { // console.log(obj[1]); // console.log(Object.keys(obj[j])); //console.log(Object.values(obj[j])); //console.log(parseInt(Object.keys(obj[j]))); //console.log(parseInt(Object.values(obj[j]))) dataPoints.push({ x: parseInt(Object.keys(obj[j])), y: parseFloat(Object.values(obj[j])) }); chart.render(); } } } }) chart.render(); } ,因为它无效。
希望对您有所帮助。