如何根据电子邮件地址域/ TLD验证jQuery中的表单字段? (.com,.net,.edu?)

时间:2012-01-10 00:19:09

标签: javascript jquery html forms validation

使用jQuery验证字段以确保其以特定TLD结尾的最佳方法是什么?假设我希望它仅验证电子邮件字段,如果它以 .edu 结束?

**编辑:刚刚意识到jQuery有自己的内置验证,不确定我是否需要bassistance plugin

1 个答案:

答案 0 :(得分:2)

我对这个特定插件并不太熟悉,但看起来您应该能够使用如下语法扩展它:

jQuery.validator.addMethod("emailOrg", function(email_org, element) {
    email_org = email_org.replace(/\s+/g, ""); 
    return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+org$/i.test(email_org);
}, "Please specify a valid .org email");

$("#myform").validate({
  rules: {
    field: {
      required: true,
      emailOrg: true
    }
  }
});

该示例将验证以org结尾的所有电子邮件,而不是其他电子邮件。