JavaScript-正则表达式邮箱验证

JavaScript 邮箱验证正则表达式

最近对正则表达式进行了一个梳理(如需要的可看下我前一篇正则表达式的梳理文章),刚好这段时间项目有很多个地方需要进行邮箱验证,之前都是在网上搜的,这里还是自己总结一下

验证规则

首先邮箱的格式是: 登录名@主机名.域名
然后我在网上搜了几个比较主要的邮箱网址,进行注册,看了下他们的注册规则(接下来也就是我们的验证规则)
几个国内主要的邮箱网址截图如下:
JavaScript-正则表达式邮箱验证_第1张图片
JavaScript-正则表达式邮箱验证_第2张图片
JavaScript-正则表达式邮箱验证_第3张图片
----根据上面几个的反馈,目前国内邮箱登录名部分是以数字(典型qq邮箱)或字母(大部分)开头,中间可以使用下划线"_" (网上部分说的还可以使用中线"-"但是我看了这几个邮箱网址都不行,如有需要可以加进去,最后我将贴上有中线的正则)

然后主机名没有疑问是字母和数字

最后的域名我看了下网上的大概有如下几种:
.com
.cn
.net
.com.cn
.XXXX(网上的特殊域名考虑在5个字符之内)

其它的更长的非主流域名就不考虑了

根据上面总结的邮箱各种格式可能性正则表达式及验证结果如下

var reg = /^[a-zA-Z0-9][a-zA-Z0-9_]+\@[a-zA-Z0-9]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,5})*$/i ; 
var str = '[email protected]' ;
var str1 = '[email protected]' ;
var str2 = '[email protected]' ;
var str3 = '[email protected]' ;
var str4 = '[email protected]' ;
var str5 = '[email protected]' ;
var str6 = '[email protected]' ;
var str7 = '[email protected]' ;
var str8 = '[email protected]' ;
var str9 = '[email protected]' ;
console.log(str.match(reg))  //["[email protected]", undefined, index: 0, input: "[email protected]", groups: undefined]
console.log(str1.match(reg))  //["[email protected]", undefined, index: 0, input: "[email protected]", groups: undefined]
console.log(str2.match(reg))  //["[email protected]", undefined, index: 0, input: "[email protected]", groups: undefined]
console.log(str3.match(reg))  //null
console.log(str4.match(reg))  //null
console.log(str5.match(reg))  //["[email protected]", undefined, index: 0, input: "[email protected]", groups: undefined]
console.log(str6.match(reg))  //["[email protected]", ".cn", index: 0, input: "[email protected]", groups: undefined]
console.log(str7.match(reg))  //["[email protected]", ".net", index: 0, input: "[email protected]", groups: undefined]
console.log(str8.match(reg))  //null
console.log(str9.match(reg))  //null

正则验证表达式:(不限于主流.com .cn .net)

/^[a-zA-Z0-9][a-zA-Z0-9_]+\@[a-zA-Z0-9]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,5})*$/i

登录名加上"-"验证表达式:

/^[a-zA-Z0-9][a-zA-Z0-9_-]+\@[a-zA-Z0-9]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,5})*$/i

正则验证表达式:(限于主流域名 .com | .cn | .net | .com.cn)

/^[a-zA-Z0-9][a-zA-Z0-9_]+\@[a-zA-Z0-9]+\.(com|cn|net|com.cn)$/i

如果有错误或者不严谨的麻烦大佬们指出改正,谢谢

你可能感兴趣的:(正则表达式,JavaScript)