⾸来看⼏个合法邮箱的例⼦:
(纯字母)
(数字、字母混合)
wang123@(多级域名)
wang_(含下划线 _)
<(含英语句号 .)
根据对以上邮箱的观察,可将邮箱分为两部分(“@”左边和右边部分)来进⾏分析:
1. 左边部分可以有数字、字母、下划线(_)和英语句号(.),因此可以表⽰成:[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*。
2. 右边部分是域名,按照域名的规则,可以有数字、字母、短横线(-)和英语句号(.),另外顶级域名⼀般为 2 ~ 6 个英⽂字母(⽐
如“cn”、“com”、“site”、“group”、“online”),故可表⽰为:([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}。
要注意两点:
考虑到匹配邮箱时字符串的⼀头⼀尾不能有其它字符,故要加上开始标志元字符 ^ 和结束标志元字符 $。
英语句号(.)是正则表达式的元字符,因此要进⾏转义(\.)。
⽤于邮箱验证的函数及测试⽤例如下:
/* ⽤于邮箱验证的函数 */
function validateEmail(email){
// 邮箱验证正则
var reg =/^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/;
st(email);
}
// 测试⽤例
var emailArr =['','','','wang123@','wang_',''];
var res = emailArr.map(function(item){
if(validateEmail(item)){
return item +' 有效';
}
return item +' ⽆效';
});
// 测试⽤例均有效
console.log(res);