前端开发经常用遇到Email地址的验证, 网上见到很多, 但有些是验证比较简单的Eamil地址, 当真正实际使用时隐约发现有些合理的Email地址没有被考虑到, 导致有些合理的Email地址在JS验证时不通过, 从而提交不了表单, 于是有必要重新用正则结合JS写一个简洁, 高效, 允许合理最大范围字符的Email地址验证函数, 因为这个功能在平时使用的频率很高, 函数如下:
-----------------------------------------------------------------------------------------------------------------
function isEmail(strEmail){
//功能: 检查Email地址的正确性
//返回值: boolean类型, true = 合法 email, false = 错误email
var e=strEmail.replace(/^\s*|\s*$/g,'');var emailReg=/^[\w-\._]*[\w]@[\w][\.\w-]*[\w]\.[a-z]+$/i;
var p=e.indexOf('@');
if(emailReg.test(e) && e.indexOf('..')<0 && e.indexOf('@',p+1)<0)
return true;
else
return false;
}
----------------------------------------------------------------------------------------------------------------
TEST/测试:
var e1="a_aa@163.com"; //应该提示合法的Email地址//var e1="a@163.com.cn"; //应该提示合法的Email地址
//var e1="a_aa@163.com.cn"; //应该提示合法的Email地址
//var e1="a-aa@163.com.g"; //应该提示合法的Email地址
//var e1="a-aa@c7.n"; //应该提示合法的Email地址
//var e1="a-a_a.a@163.com"; //应该提示合法的Email地址
//var e1="a#aa@.163.com"; //应该提示非法的Email地址
//var e1="a@asd_aa@.163.com"; //应该提示非法的Email地址
//var e1="aa..asd_aa@.163.com"; //应该提示非法的Email地址
//var e1="aa.a9sd_aa@163..com"; //应该提示非法的Email地址
//var e1="a%a.a9sd_aa@163.com"; //应该提示非法的Email地址
//var e1="a\xa.a9sd_aa@163.com"; //应该提示非法的Email地址
//var e1="aa.asd_aa@163.co!m"; //应该提示非法的Email地址
//var e1="a\ra.a3sd_ata@163.com"; //因 \ 为转义特殊字符,如它和其后的数字或英文字母构成的组合如果符合转义约定,那么在字符串赋值时已经被转义为其它字符了,再到后面的 Eamil 检测,如果符合Eamil地址要求
//注意: 有些Email地址在理论上符合Email语法/语意要求, 但实际可能不存在, 如s@dd.x 符合Email语法要求, 但实际不存在
if(isEmail(e1))
alert('合法的Email地址');
else
alert('非法的Email地址');
//感谢网友的参与的讨论,使得更加精简的正则模式...