Jquery使用RegExvalidation电子邮件

我正在尝试使用下面的代码validation电子邮件,目前它正在测试电子邮件以查看它是否与正则表达式匹配,但即使输入了有效的电子邮件,也会激活错误并且页面不会提交

$('#emailsubmit').submit(function() { var email = new RegExp(/^(([^()[\]\\.,;:\s@\"]+(\.[^()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/); if (!("#emailAddr").match(email)) { $("#errormsg").html("Please insert a valid email"); $("#errormsg").show(); var emailaddr = $("#emailAddr").val(); alert(emailaddr); return false; } }); 

你忘了使用JQuery的.val()方法来获取元素的值。 相反,你试图在HTML元素上使用.match() (显然不是字符串)。 码:

  $('#emailsubmit').submit(function() { var email = new RegExp(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/); if (!("#emailAddr").val().match(email)) { $("#errormsg").html("Please insert a valid email"); $("#errormsg").show(); var emailaddr = $("#emailAddr").val(); alert(emailaddr); return false; } }); 

您匹配值“#emailAddr”,而不是ID为“emailAddr”的元素的值。

这是我的脚本,我已经使用了一段时间……它工作得很好,还检查邮政编码和其他表单字段的输入。

 function checkEmail(e_mail) { var str = new String(e_mail); var biz_name = document.myForm.biz_name; var zip_code = document.myForm.zip_code; var e_mail = document.myForm.e_mail; var str2 = new String(zip_code); var terms = document.myForm.terms; if (biz_name.value == "") { window.alert("Oops. Please enter your business name!"); biz_name.focus(); return false; } if (zip_code.value == "") { window.alert("Oops. Please enter your business zip code!"); zip_code.focus(); return false; } if (e_mail.value == "") { window.alert("Oops. Please enter your email address!"); e_mail.focus(); return false; } if (terms.checked == false) { window.alert("Oops. Please agree to the terms and conditions!"); terms.focus(); return false; } var isOK = true; rExp = /[!\"£$%\^&*()-+=<>,\'#?\\|¬`\/\[\]]/ if( rExp.test(str) ) isOK = false; if( str.indexOf('.') == -1 || str.indexOf('@') == -1 ) isOK = false; if( str.slice(str.lastIndexOf('.')+1,str.length).length < 2 ) isOK = false; if( str.slice(0,str.indexOf('@')).length < 1 ) isOK = false; if( str.slice(str.indexOf('@')+1,str.lastIndexOf('.')).length < 1 ) isOK = false; if( !isOK ) alert( "Oops! A valid email is needed. Check it and try again!" ); e_mail.focus(); return isOK; }