Javascript 表单的电话和邮件验证

Javascript 表单的电话和邮件验证,javascript,Javascript,Reg.js function chkform() { var pattern = "/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/"; var ret = true; if (document.getElementById("name").value === "") { document.getElementById("name")

Reg.js

    function chkform() {
        var pattern = "/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/";
        var ret = true;
        if (document.getElementById("name").value === "") {
            document.getElementById("name").value = 'Name cannot be left blank' ;
            //document.getElementById("name").style.color="red" ;
            ret = false;
        }
        if (document.getElementById("email").value != "") {
            if (document.getElementById("email").value != pattern ) {
            document.getElementById("email").value = 'format is not right' ;
            //document.getElementById("email").style.color="red" ;
            ret = false;
        } 
        } else {
                document.getElementById("email").value = 'cannot b left blank' ;
        }

        if (document.getElementById("number").value === "") {
            document.getElementById("number").value = 'number cannot be left blank' ;
            //document.getElementById("number").style.color="red" ;
            ret = false;
        }
        if (document.getElementById("city").value === "") {
            document.getElementById("city").value = 'city cannot be left blank' ;
            //document.getElementById("city").style.color="red" ;
            ret = false;
        }
        if (document.getElementById("dep").value === "") {
            //console.log("5");
            ret = false;
        }
        if (document.getElementById("cname").value === "Course interested in") {
            console.log("6");
            ret = false;
        }
        return ret;
    }
我正在使用reg.js验证我的表单,当值为空时,它可以正常工作,但当我输入我的邮件id时。bhardwaj@gmail.com,根据我的代码,其显示格式不正确,但格式正确,因为我的电子邮件是正确的,所以我出了问题,我想检查电话也

(如果有帮助的话,我会把它作为一个答案而不是评论)

用于电子邮件验证的正则表达式是一个雷区。W3正在为html提议一个type=email属性,该属性使用:

/^[a-zA-Z0-9.!#$%&'*+/=?^ `{124;}-]+@[a-zA-Z0-9-]+(?:[a-zA-Z0-9-]+)*$/

这是一个很好的模式,但电子邮件中有太多的可能性,很难做到100%准确

这是你的问题:

if (document.getElementById("email").value != pattern ) {
因为您使用的是正则表达式,所以您希望对模式进行测试,而不是字符串比较。为了简化操作,您可以使用正则表达式文本;因此您可以编写:

var pattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
请注意,我删除了引号。然后将另一行更改为:

if ( pattern.test( document.getElementById("email").value ) ) {
更多信息可在此处找到:

另一种更现代的/HTML5方法可能是只制作输入type=“email”并具有自定义验证处理程序。有关更多信息,请参阅