使用jQuery验证字段以确保其以特定TLD结尾的最佳方法是什么?假设我希望它仅验证电子邮件字段,如果它以 .edu 结束?
**编辑:刚刚意识到jQuery有自己的内置验证,不确定我是否需要bassistance plugin?
答案 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结尾的所有电子邮件,而不是其他电子邮件。