Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 电子邮件验证功能运行不正常_Javascript_Regex_Email - Fatal编程技术网

Javascript 电子邮件验证功能运行不正常

Javascript 电子邮件验证功能运行不正常,javascript,regex,email,Javascript,Regex,Email,我有一个注册表单,其中有一个电子邮件字段。我制作了一个正则表达式来验证它,并验证正则表达式是否工作正常。我面临的问题是,做这项工作的功能不起作用。这将从以下几点变得更加清楚: var email = getEle('email', clas)[0].value; // 'getEle()' is a function which returns an element whose calss is the first arguement console.log(email); // logs co

我有一个注册表单,其中有一个电子邮件字段。我制作了一个正则表达式来验证它,并验证正则表达式是否工作正常。我面临的问题是,做这项工作的功能不起作用。这将从以下几点变得更加清楚:

var email = getEle('email', clas)[0].value; // 'getEle()' is a function which returns an element whose calss is the first arguement
console.log(email); // logs correct thing which means that email has been caught by the javascript       
function em(){ // this function will check email
        var eln = email.match(/([A-Za-z0-9\._\-]+)@([A-Za-z]+).([A-Za-z]+)/);
        console.log(eln);   
            if(eln.length ===4){
                email = email;
            }else{
                Error = Error + "2) Your Email address is not valid. Please enter valid email Address\n"
            }
    };em();// end
我的电子邮件验证
regex
工作正常,您可以在这里看到
给我的错误是:
uncaughttypeerror:无法读取null的属性“length”

第一个日志记录正确的内容,但第二个日志记录的是
null

如果这是在控制台中完成的(我使用的是google chrome),则不会给出任何错误

问题是,如果手动完成此操作时没有给出错误,那么在将其作为函数代码编写时,为什么会向我提供错误

错在哪里

完整代码:

var getEle = function(ele, type){
    if(type ==="id"){
    return document.getElementById(ele);
    };
    if(type==="class"){
        return document.getElementsByClassName(ele);
    };
    if(type === 'tag'){
        return docuemnt.getElementsByTagName(ele);
    };
};
function signUpform(){
    var fname = getEle('fname', clas)[0].value,
        lname = getEle('lname', clas)[0].value,
        email = getEle('email', clas)[0].value,
        phoneNo = getEle('phoneNo', clas)[0].value,
        age = getEle('age', clas)[0].value,
        date = getEle('date', clas)[0].value,
        username = getEle('username', clas)[0].value,
        password = getEle('password', clas)[0].value,
        re_pass = getEle('re_pass', clas)[0].value,
        Error = "Errors List: \n";
    console.log(email);
    function flname(){ // this function will check the first name and the last name 
        if(fname === "" || lname ===""){
            Error = Error +'1) You cannot leave first name and last name blank\n';
        }else{
            fname.value = fname.value.replace(/[0-9]+/g,"");
            lname = lname.replace(/[0-9]+/g,"");
        };
    };flname();// end

    function em(){ // this function will check email
        var eln = email.match(/([A-Za-z0-9\._\-]+)@([A-Za-z]+).([A-Za-z]+)/);
        console.log(eln);   
            if(eln.length ===4){
                email = email;
            }else{
                Error = Error + "2) Your Email address is not valid. Please enter valid email Address\n"
            }
    };em();// end 

};

无需检查匹配数组的长度,只需将
em
函数简化如下:

function em(){ // this function will check email
    var eln = /\b[\w.-]+@[A-Za-z]+\.[A-Za-z]+\b/.test( email );
    if (!eln)
       Error = Error + "2) Your Email address is not valid. Please enter valid email";
};

HTML5和jQuery可以吗?如果您将
console.log(email)
放在
var eln..
行之前,它能工作吗?您能告诉我们
console.log(email)
的实际输出是什么吗?
email
来自哪里?我的意思是
getEle('email',clas)[0]。值是从用户输入中获取的?而且您的正则表达式也不太正确。在第一个字符类中,
-
前面的反斜杠是不必要的,并且在靠近末尾的
之前缺少一个反斜杠。此外,域名中肯定有破折号和其他东西,还有子域,但这有点无关紧要,因为用正则表达式全面覆盖有效电子邮件有点困难。一切都很正常。