实现企业邮箱输入校验,拒绝Gmail/Yahoo等公共邮箱服务商地址
实现企业邮箱校验(拦截公共邮箱服务商)
需求是对邮箱输入框做校验,仅允许合法企业邮箱(格式如 yourname@firmname.com),拒绝Gmail、Yahoo、Bing、Yopmail、AOL等公共邮箱地址。
核心思路
利用正则表达式的负向预查特性,在匹配标准邮箱格式的同时,排除指定的公共邮箱域名。
完整实现代码
$(document).ready(function() { $('#customer_email').on('input', function() { // 获取输入的邮箱值并去除首尾空格 var email = $(this).val().trim(); // 定义需要拦截的公共邮箱域名黑名单 var blockedDomains = ['gmail.com', 'yahoo.com', 'bing.com', 'yopmail.com', 'aol.com']; // 构建正则表达式:匹配标准邮箱格式,同时排除黑名单域名 var businessEmailRegex = new RegExp( '^[a-zA-Z0-9._%+-]+@(?!(' + blockedDomains.join('|') + '))[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$', 'i' // 忽略大小写,避免区分GMAIL.COM和gmail.com ); // 校验邮箱状态 if (email === '' || businessEmailRegex.test(email)) { // 空值或合法企业邮箱,隐藏错误提示 $('.email-invalid-validation-msg').addClass('d-none'); } else { // 非法邮箱(公共域名或格式错误),显示错误提示 $('.email-invalid-validation-msg').removeClass('d-none'); } }); });
代码关键说明
- 黑名单维护:
blockedDomains数组可直接添加/移除需要拦截的域名,无需修改正则主体,维护更便捷。 - 正则逻辑:
^[a-zA-Z0-9._%+-]+:匹配邮箱用户名部分,覆盖常见合法字符。@(?!(gmail.com|yahoo.com|...)):负向预查规则,确保@后的域名不在黑名单列表内。[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$:兼容多级企业域名(如company.co.uk这类格式)的匹配。
- 大小写兼容:正则添加
i标志,避免用户输入大写域名(如GMAIL.COM)导致校验失效。 - 空值处理:保留空值的合法状态,避免用户未输入时就触发错误提示。
额外建议
- 若需拦截更多公共域名,直接往
blockedDomains数组追加即可,比如'outlook.com'、'hotmail.com'等。 - 建议结合表单提交时的后端二次校验,防止用户绕过前端校验直接提交非法数据。
内容的提问来源于stack exchange,提问作者Zhine S
相关产品推荐
相关产品推荐

