我使用此方法进行了.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
},
}
});
答案 0 :(得分:1)
由于.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
也会匹配)
希望有所帮助
答案 1 :(得分:0)
使用正则表达式匹配。 Here是一个很棒的工具。
/ \ EDU。[A-Z] [A-Z] / I
$.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).match(/\.edu/i) || value.slice(-7).match(/\.edu\.[a-z][a-z]/i);
}, "Please enter valid .edu email address");
$("#requestform").validate({
rules: {
email: {
required: true,
email: true,
edu: true
},
}
});