js邮箱验证方法 js与正则表达式验证邮箱格式

发布时间:2020-08-29编辑:脚本学堂
本文介绍了js结合正则表达式验证邮箱格式的方法,多种方法,多个实例验证email邮箱是否正确,需要的朋友参考下。

1、正则验证邮箱格式
 

复制代码 代码示例:
function checkemail(){
  var email = document.getElementByIdx_x_x("email").value;
  var reg = /^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/;
  ismail= reg.test(email);
  if (!ismail ) {
    alert("邮箱格式不正确!");
  }
}
 

2、可以匹配国内大多数流行的邮箱后缀,但是企业域名邮箱该方法不适用
 

复制代码 代码示例:
var email = document.getElementByIdx_x_x("email").value;
var arrEmail = email.split("@");
var flag = "false";
if(arrEmail.length>1){
  var email_varlidate = arrEmail[1];
  var des = "'qq.com' || '126.com' || 'yahoo.com' || 'yahoo.com.cn' || 'gmail.com' || 'hotmail.com' || 'sina.com' || '21.com' || 'msn.com' || '163.com' || 'yeah.net' || 'yahoo.cn' || 'foxmail.com' || 'sohu.com' || 'sogou.com' || 'tom.com' || '21cn.com' || 'live.cn' || 'live.com' || 'hexun.com' || '139.com' || '189.cn' || '91.com' || '56.com' || 'eyou.com' || 'people.com.cn' || 'sh.com'";
  if(des.indexOf("'"+email_varlidate+"'")!=-1){
    flag = "true";
  }
}
if (flag != "true"; ) {
  alert("邮箱格式不正确!");
}

相比之前介绍的javascript验证Email邮箱格式的三种方法,以上二个例子略显单薄,下面通过实例一起深入学习下JS使用正则表达式验证邮箱的方法,一起来看看吧。

JS邮箱验证,JS验证邮箱正则表达式

邮箱正则:

复制代码 代码示例:
^[a-z0-9]+([._-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$

JS邮箱验证、JS验证邮箱最正宗的正则表达式。

正则表达式:
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-。
然后是点“.”和单词字符和-的组合,可以有一个或者多个组合。
 

复制代码 代码示例:
<script type="text/javascript">
function isEmail(str){
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
return reg.test(str);
}
var str = 'test@hotmail.com';
document.write(isEmail(str)+'<br />');
var str2 = 'test@sima.vip.com';
document.write(isEmail(str2)+'<br />');
var str3 = 'te-st@qq.com.cn';
document.write(isEmail(str3)+'<br />');
var str4 = 'te_st@sima.vip.com';
document.write(isEmail(str4)+'<br />');
var str5 = 'te.._st@sima.vip.com';
document.write(isEmail(str5)+'<br />');
</script>
 

1、纯数字
比如:123456@jb200.com
2、纯字母
3、字母数字混合
4、带点的
比如:web.blue@jb200.com
5、带下划线
比如:web_blue@jb200.com
6、带连接线
比如:web-blue@jb200.com
邮箱域至少有一个“.”和两个单词,再严格点那么最后的顶级域至少要2个字母,最大呢?以域名“name”为准,那么最大就是4,宽松点就设为5吧^_^。

当然以上不可能的情况:以“_”或“-”开头或者结尾,包含特殊符号的。

因此,正则表达式如下:
 

复制代码 代码示例:
^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,5}$
<script type="text/javascript">
fChkMail=function(szMail){
var szReg=/^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,5}$/;
var bChk=szReg.test(szMail);
return bChk;
}
</script>
<input type="text" id="Mail" value="" />
<input type="button" value="验证邮箱地址" onclick="alert(fChkMail(document.getElementById('Mail').value));" />
<p>邮箱不能以 - _ .以及其它特殊字符开头和结束</p>
<p>邮箱域名结尾为2~5个字母,比如cn、com、name</p>