JavaScript邮箱验证正则表达式实战与解析
本文整理并解析了JavaScript中常用的邮箱验证正则表达式。通过对比不同版本的正则规则,重点讨论了中划线域名、二级域名以及.com.cn后缀的支持情况。提供了完整的JS验证函数及HTML表单交互代码,旨在帮助开发者实现准确且用户友好的邮箱格式校验。
邮箱验证背景与正则基础
背景:正则表达式是一门深奥的技术,想要熟练掌握并非易事。但在日常开发中,我们最常遇到的验证场景无非是电话、邮箱和手机号等。虽然网上有很多现成的正则模板,但要真正写出准确且健壮的验证规则,仍需具备一定的正则知识,并通过大量的测试来确保其可靠性:-)
下面展示邮箱正则的具体实现:
关于中划线域名,这通常被称为“扁担域名”。由于输入较为繁琐且外观不够正规,这类域名的商业价值较低,目前关注此类域名的投资者较少。根据DNS标准,域名中是不允许包含下划线的。
关于下划线,部分用户在注册用户名时喜欢使用下划线_。这种命名方式在登录邮箱时会造成不便,同时也给发送邮件的人带来困扰。
目前,二级域名邮箱的使用已基本被规范。上述正则表达式允许包含下划线,虽然扩大了匹配范围,但主要作用是起到提示用户的效果,问题不大。
针对.com.cn域名的支持,正则部分需包含:((\.[a-zA-Z0-9-]{2,3}){1,2} com.cn
正则表达式演进与代码实现
—————————————————————————————————————————————————————————————— //emailpreg = /^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,5}$/; //这个对QQ号的邮箱验证不了。 emailpreg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/; //dfdfd1212@dfdfd.abc.cn 都成二级邮箱。abc@12df1.com.cn emailpreg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9-])+((\.[a-zA-Z0-9-]{2,3}){1,2})$/; //域名是不允许有下划线的 ,去掉下划线,这个就是最后的正则。至于还有啥首字母不能是下划线,要这样,这正则就还得加长...用户也不是sb,只是起到一定提示作用,别搞复杂了,到此为止吧。 <dd><input id="2" rel="邮箱" res='2' type="text" class="item-edit-txt" name="2" value="<{$user.email}>" ></dd> }else if($(this).attr('res') == '2' && !emailpreg.test($(this).val())){//从QQ登录过来的用户大网接口获取不到邮箱,放开让其填写。 $(this).css("border","1px solid #f00"); $("#"+$(this).attr('res')+'span').remove(); $("#"+$(this).attr('res')).after("<span id="+$(this).attr('res')+'span'+"><br />"+$(this).attr("rel")+"格式不正确</span>"); $(this).focus(); res = false; return false;
——————————————————————————————————————————————————————————————
JavaScript表单验证email,判断一个输入量是否为邮箱email,通过正则表达式实现。
//检查email邮箱
function isEmail(str){
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
return reg.test(str);
}
以上内容是小编给大家日常收集JS邮箱验证正则表达式,希望大家喜欢。
JavaScript异步发送HTTP请求时怎么优雅地处理错误
2026-11-05 17:10:44
5款主流JS在线运行工具对比:CodePen、JSFiddle与StackBlitz怎么选
2026-11-05 17:04:04
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
