【发布时间】:2013-10-18 11:44:52
【问题描述】:
一个非常具体的问题,这个 jQuery 总是记录到控制台,尽管电子邮件格式是一个真实地址,但它是无效的。似乎无法弄清楚为什么。正则表达式是否正确?非常感谢任何帮助
// VALIDATION ON BLUR
$("#prospects_form > *").blur(function() {
// Validate Email
function valEmail() {
var email = $("#form_email"),
// Check address format
emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!emailFilter.test(email.value)) {
// Incorrect
$("#form_email").addClass("invalid");
console.log('email invalid');
} else {
// Correct
$("#form_email").removeClass("invalid");
console.log('email valid');
}
}
valEmail();
});
【问题讨论】:
-
看到
var email是一个jQuery对象,你应该尝试email.val()来获取它的值。 -
记录或提醒
email.value并检查它是否符合预期。 -
仅供参考,正则表达式看起来有效:regex101.com/r/sH7wB0
-
注意:您的正则表达式将无法匹配
something+deliver@domain.tld,并且带有特殊字符的域也不会被标记为有效。这部分也有点奇怪([a-zA-Z0-9]{2,4})+你说.之后的最后一部分有一个或多个出现2-4[a-zA-Z0-9],虽然这适用于超过4字符的tlds,它看起来奇怪。
标签: jquery forms validation