用Javascript正则表达式验证Email地址
作者:不详 来源:幸福收藏夹 【大 中 小】 浏览: 添加日期:2010-04-10 我要评论(2)
先看如下一段代码:
function isValidMail(sText){
var reMail = /^(?:\w+\.?)*\w+@(?:\w+\.?)*\w+$/;
return reMail.test(sText);
}
似乎这样验证像sofish@163.com这样的邮箱是没问题的。但,由于仔细看一下在AT(@)后面的非捕获性引用中,使用的是*(出现任意次):
var reMail = /^(?:\w+\.?)*\w+@(?:\w+\.?)*\w+$/;
那么,也包括出现0次,这样的话。像sofish@163com这样的邮箱也是通过验证的。 显然,"."是必须至少出现一次的,因此,而"+"才表示至少出现一次。但这里,在AT后面,我们可以写像163.com.cn这样的结尾,但直接改成"+"的话,这样163..com.cn也可以通过验证。下面是我的方法:
function isValidMail(sText) {
var reMail = /^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/;
alert(reMail.test(sText))
}
规定"."号只出现一次。然后在非捕获引用后面,让其他至少显示1次,再以任意的字符结束。不过,这里的"\w"是包括下划线的,也就是说,像 sofish@163_.com_这样的邮件也是可能通过难的,显然,这是一个不合法的邮件,在AT后面的"."号后前,是不可以出现下划线的,而后面,只能是英文字母的(至少目前我没有见过用后面是数字的域名)。并且,这里应该注意到的是,"\w"所代表的字符包括下划线,不用缩写是这样的:
[a-zA-Z_0-9]
因此,上面的代码可以这样进行改装:
function isValidMail(sText) {
var reMail = /^(?:[a-z\d]+[_\-\+\.]?)*[a-z\d]+@(?:([a-z\d]+\-?)*[a-z\d]+\.)+([a-z]{2,})+$/i;
alert(reMail.test(sText))
}
其实,通常这样写就可以了,对吧。要更深入,还可以考虑AT后面的各个点后面,不应该用相同的字母,比如.com.cn.com.cn(很显然,这样的域名还是有的,我错了,感谢@StonyWang同学的提醒,真的有人这么囧这样做么?)这样是不被请允许的。可以考虑一下利用捕获性引用进行储存,并进行比较验证。当做一道练习题吧(突然感觉好像在学高中的数学题)。
标准之路www.aa25.cn 提示:可以先修改部分代码后再运行
(如果您觉得本站不错,请告诉身边的朋友,或转载到论坛、百度知道、贴吧等,记得带网址哟,不胜感激!)
〖常用代码〗Tags: Javascript js 正则 正则验证 email
所属专题:JS代码
相关文章
- 百个前端设计常用Javascript语句
- CSS+JS实现兼容性很好的无限级下拉菜单
- JS焦点图库 myFocus
- 带关闭功能的网站顶部滑出的广告提示条
- PHP取得当前插入数据库中最新记录的id值
- JS记录并显示网页的最后修改时间
- Javascript 中阻止浏览器默认操作
- PHP中替换换行符的方法
- JS+DIV表单实例——鼠标移上背景变色和文字提示
- JS的location.href如何跳出框架打开新页面
- 间歇性无缝滚动JS代码实例
- javascript实现可以拖动的层示例(层拖动,兼容IE/FF)
- IE与Firefox在JavaScript上的7个不同句法
- div+css下js对联广告不随屏幕滚动的解决方法
- PHP中switch语句的实例应用
- html中a标记href值正则表达式替换为空
更多评论(2)..会员评论
- min(221.205.*.*) 发表于:2011-06-11 17:51:26
- 恩 恩 这个只能半段邮箱格式 比如a@a.com 就对的了
- hongangleyan(58.241.*.*) 发表于:2010-10-13 13:29:59
- 这个只能判断邮箱的格式是否正确,却不能判断邮箱的真实性,对不?
- 管理员回复:邮箱的真实性需要用程序往邮箱发一个唯一地址,点击后才可确认邮箱真实性
推荐文章
热门文章
最新评论文章
推荐专题
在线交流QQ群
- 106310407(开)
- 55427134(开)
- 2993401(开)
- 30235673(开)
- 33424604(开)
- 2993401(开)
- 161512108(开)
- 161510519(开)
- 158375021(开)
- 155858414(开)
- 143309878(开)
- 16373807(开)
- 129098721(开)
- 123473199(开)
- 146991009(开)
- 135792800(开)
