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]。值是从用户输入中获取的?而且您的正则表达式也不太正确。在第一个字符类中,
和-
前面的反斜杠是不必要的,并且在靠近末尾的
之前缺少一个反斜杠。此外,域名中肯定有破折号和其他东西,还有子域,但这有点无关紧要,因为用正则表达式全面覆盖有效电子邮件有点困难。一切都很正常。