Email 地址验证问题,在前端开发经常用遇到Email地址的验证, 网上不是见到很多了吗? 如果你仔细看就会发现,
有些是验证比较简单的或者是比较理想一点的Eamil地址, 当真正实际使用时隐约发现有些合理的Email地址没有被考虑到, 导致有些合理的Email地址在JS验证时不通过, 从而提交不了表单,
于是有必要重新用正则结合JS写一个简洁, 高效, 允许合理最大范围字符的Email地址验证函数, 因为这个功能在平时使用的频率很高, 函数如下:
- JScript code
function isEmail(strEmail){ //true=legal email, false= wrong email var e=strEmail.replace(/^\s*|\s*$/g,''); var emailReg=/^[\d\w-\._]*[\d\w]{1}@[\d\w]{1}[\.\d\w-]*[\d\w]{1}\.[a-z]+$/i; var p=e.indexOf('@'); if(emailReg.test(e) && e.indexOf('..')<0 && e.indexOf('@',p+1)<0) return true; else return false; }
偶写的就这些,分享一下差不多一个上午的功夫,^_^...,如果还有更好的方法就拍砖指点一下,一起讨论...
其中的转义字符 \ 比较诡异,奋斗了蛮久
- JScript code
var e1='a.s_df-123.z@163.com.cn'; //var e1="a@163.com.cn"; //应该提示合法的Email地址 //var e1="a_aa@163.com.cn"; //应该提示合法的Email地址 //var e1="1234@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地址要求则提示合法 Eamil,否则提示非法 Eamil; //一般字符串里有: \数字, \b, \f, \n, \t, \r, \x 等(更多网少查找)则提示非法Eamil; //但 \m, \h等不符合转义约定,在字符串赋值时\被忽略掉, 则提示合法Eamil //注意: 有些Email地址在理论上符合Email语法/语意要求, 但实际可能不存在, 如s@dd.x 符合Email语法要求, 但实际不存在 if(isEmail(e1)) alert('合法的Email地址'); else alert('非法的Email地址');
------解决方案--------------------
楼主很强大
------解决方案--------------------
谢谢楼主
------解决方案--------------------
我建议楼主把所有的“{1}”都去掉,明显的多此一举。
还有把所有的“\d”都去掉,明显的多此一举。因为“\w”中就已经包括“\d”了。
不过,还是很支持楼主这种乐于分享的精神。
我也弄了一个:紧做参考
var re=/\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
------解决方案--------------------
很好,谢谢楼主的共享精神
------解决方案--------------------
------解决方案--------------------
用html5吧 email标签一用 一行搞定