javascript - jQuery 表单验证,仅允许 .EDU 和 .edu.nn(其中 nn 是 2 位国家/地区代码)电子邮件地址

标签 javascript jquery jquery-validate

我使用此方法进行了 .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}:表示精确匹配xN次(用于精​​确匹配2个字母a-z)

$:表示匹配“输入结束”(否则 someacct.edu.fr@gmail.com 也会匹配)

希望对你有帮助

关于javascript - jQuery 表单验证,仅允许 .EDU 和 .edu.nn(其中 nn 是 2 位国家/地区代码)电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807395/

相关文章:

jquery - 如何将错误消息显示为工具提示?

javascript - 使用 javascript (CRM 4.0) 在 IE 上打开文件夹?

JavaScript 元素 src 更改

asp.net-mvc - 使用 MVC 和 jQuery 进行内联客户端验证

jquery - 在 JTable 中显示日期和时间

JQuery 布局 UI 和 (ESRI Dojo) 问题

jquery - 使用 jQuery 验证插件验证多维数组

javascript - 为什么表单提交发生在文件上传完成之前?

javascript - 使用 Amazon CDK 创建事件桥堆栈

javascript - 减小 div 及其所有内容的大小以适合较小的 div jquery 和 php