我使用此方法进行了 .edu 电子邮件验证 - jQuery Form Validation, Only Allow .EDU Email Addresses
但我不想只使用 .edu 或 .edu.nn(其中 nn 是 2 位国家/地区代码),而是希望将两者包含在一个中。不知道如何实现这一目标。 以下是同时接受 .edu 和 .edu.fr 的代码 - 我需要接受除 .edu 之外的所有其他 2 位国家/地区代码
感谢您的帮助!
$.validator.addMethod("edu", function (value, element, param) {
// Make it work optionally OR
// Check the last 4 and 7 characters and ensure they match .edu and .edu.2-digit-country-code
return (this.optional(element) || value.slice(-4) == ".edu" || value.slice(-7) == ".edu.fr");
}, "Please enter valid .edu email address");
$("#requestform").validate({
rules: {
email: {
required: true,
email: true,
edu: true
},
}
});
最佳答案
由于 .slice()
的性能不如同时检查两种可能性,因此使用带有可选标志的 RegExp 会更快:
此正则表达式将匹配这两个条件:
var regex =/\.edu(\.[a-z]{2})?$/
在这里查看它在 REPL 中的工作情况:
> regex.test('somename.edu')
true
> regex.test('emai.com')
false
> regex.test('email.edu.cz')
true
那么你的验证器函数将像这样小:
$.validator.addMethod("edu", function (value, element, param) {
// Make it work optionally OR
// Check the last 4 and 7 characters and ensure they match .edu and .edu.2-digit-country-code
return (value.match(/\.edu(\.[a-z]{2})?$/));
}, "Please enter valid .edu (or .edu.NN) email address");
这是另一个测试您的 RegExp
的网站:http://regexpal.com/
另外,这里是我使用的 RegExp 语法的一些解释:
x?
:表示匹配 x
0 次或多次(实际上 x
是可选的)
x{N}
:表示精确匹配x
N
次(用于精确匹配2个字母a-z)
$
:表示匹配“输入结束”(否则 someacct.edu.fr@gmail.com
也会匹配)
希望对你有帮助
关于javascript - jQuery 表单验证,仅允许 .EDU 和 .edu.nn(其中 nn 是 2 位国家/地区代码)电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807395/