求比我这个要好的email验证脚本

bbpfish 2004-10-30 02:12:19
email的javascript的验证脚本原代码如下:

function isEmail(EMAILSTR)
{
if(EMAILSTR == ""||EMAILSTR.length>30) return false;//邮件地址长度检测
if(!(EMAILSTR.indexOf("@")>1 && EMAILSTR.indexOf(".")>3) && EMAILSTR.indexOf("-")>0) return false; //"@",".","-",字符位置检测
var strarray=new Array("@@" , "@." ,".@", "-@" ,"@-" ,"-." ,".-" ,"..");
for(i=0;i<strarray.length;i++)
if(EMAILSTR.indexOf(strarray[i])>=0) return false; //非法字符检测
var checkstr=EMAILSTR.substring(EMAILSTR.indexOf("@") + 1)
if(checkstr.indexOf("@")>=0) return false;//@字符唯一性检测

//邮件地址只能使用字母,数字和减号
var str = EMAILSTR.substring(0,EMAILSTR.indexOf(".")-1)
checkstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@";
var allvalid = true;
for (i=0;i<str.length;i++)
{
ch=str.charAt(i);
for(j=0;j<checkstr.length;j++)
{
if(ch==checkstr.charAt(j))
break;
}
if(j==checkstr.length)
{
allvalid = false;
break;
}
}
if(!allvalid) return false;
var checkdns=EMAILSTR.substring(EMAILSTR.indexOf("."))
var dnstr=new Array(".com" , ".org" ,".gov" , ".net",".mil",".cn",
".com.cn",".net.cn",".org.cn",".gov.cn");
for(i=0;i<dnstr.length;i++)
{
if(checkdns==dnstr[i])
{
allvalid = true;
break
}
}
if(i==dnstr.length) allvalid = false;
return allvalid; //域名合法性检测
}
以上是本人自编的比较完善的email地址验证程序,由于不懂正则表达式,采用的程序比较繁杂,也可能有一些不完善和BUG,现希望有人能将其完善或提供一个比较完善的采用正则表达式的验证程序.
也希望有人能指教一下有关正则表达式怎么表示或那里有这类的文章或电子教程下载.

比比鱼 敬上
编于2004年10月29日
...全文
250 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
JK_10000 2004-11-01
  • 打赏
  • 举报
回复
请注意:这样的信箱也是合理的:
qqqq@vip.qqqqq.com
.....


附:http://www.linkwan.com/gb/routertech/netbase/dn.htm

-----
>>> 域名有哪些类型?

◇ 由于Internet最初是在美国发源的,因此最早的域名并无国家标识。国际互联网络信息中心最初设计了六类域名或网站,它们分别有不同的后缀结尾:

.com ---商业公司 ;

.org ---组织、协会等 ;

.net ---网络服务 ;

.edu ---教育机构 ;

.gov ---政府部门 ;

.mil ---军事领域 。

◇ 1998年1月开始,又启用7个新的顶级域名:

.arts---艺术机构 ;

.firm---商业公司 ;

.info---提供信息的机构;

.nom ---个人或个体 ;

.rec ---消遣机构 ;

.store--商业销售机构 ;

.web ---与WWW相关的机构。

◇ 2000年开始,又启用了新的顶级域名:

.tv

.cc

◇ 随着Internet向全世界的发展,除了edu、gov、mil一般只在美国专用外,另外三个大类com、org、net则成为全世界通用,因此这三大类域名通常称为国际域名。 由于国际域名资源有限,各个国家、地区在域名最后加上了国家标识段,由此形成了 各个国家、地区自己的国内域名。

◇ 国别的最高层域名:

.cn ---中国;

.au ---澳大利亚 ;

.jp ---日本等。

而美国因其特殊性,没有国别域名。

◇ 通常,我们又有国内域名和国际域名的说法。其区别在于域名后面是否加有:“CN”


>>> 注册域名需要什么条件?

◇ 国际域名 注册没有条件限制,单位和个人均可以申请,你只要填写我们的在线订单,告诉我们你需要的域名是什么,其它的事情由我们来帮你做。

◇ 国内域名 注册申请人必须是依法登记并且能够独立承担民事责任的组织,然后填写我们的在线订单。


>>> 哪些字母和数字可以用于域名?

◇ 英文26个字母和10个阿拉伯数字以及中横杠“-”可以用作域名。

◇ 字母的大小写没有区别。

◇ 每个层次最长不能超过26个字母。

◇ 中文只能用作中文域名或者通用网址。
多菜鸟 2004-10-31
  • 打赏
  • 举报
回复
我被楼主打败了,让我来验证的话,只要其格式差不多就可以了。
不用这么麻烦了,就算你准备好了,别人也不一定会填真实的,除非是和用户有利益关系的,他们才会填写真实,那样就不用验证也无防了。
ttyp 2004-10-31
  • 打赏
  • 举报
回复
真正的校验是连EMAIL的域名,有POP的连它的POP能连上,说明有此EMAIL存在
ice_berg16 2004-10-31
  • 打赏
  • 举报
回复
如果用户不想输入他的EMAIL,随便输入一个看起来是的就可以了,
感觉没必要为了一个EMAIL这么校验
xuyugen 2004-10-31
  • 打赏
  • 举报
回复
好象不行,有的检测不了
我找了好久就是没找到原因
是是非非 2004-10-31
  • 打赏
  • 举报
回复
(com|cn|net|hk|tw|au|uk|de)
这个里面是域名的最后一节
可以自己加
(com|cn|net|hk|tw|au|uk|de|tv|info|biz|ru)
等等
是是非非 2004-10-31
  • 打赏
  • 举报
回复
function Trim(str){
return str.replace(/(^\s*)|(\s*$)/,"");
}

function ValidEmail(str){
var regEmail=/^([a-z][a-z0-9\_\.]*[a-z0-9])(@)(([a-z0-9][a-z0-9\-]*[a-z0-9][\.])+(com|cn|net|hk|tw|au|uk|de))$/i;
return regEmail.test(Trim(str));
}
yaohai 2004-10-30
  • 打赏
  • 举报
回复
学习....
多菜鸟 2004-10-30
  • 打赏
  • 举报
回复
老大,你够绝,检测个邮箱为什么要这么烦呢?
/^[^\-_0-9][\w\-]+[^\-_]@[a-zA-Z0-9\-\.]+[^\-]\.[a-zA-Z]{3}(\.[a-zA-Z]{2,3})?$/

真的这么认真的话,这条根本无法检测,因为会经常出来新的,常用的域名又不只这么几个。
现有域名限制检测(com,net,org等检测):0分
bbpfish 2004-10-30
  • 打赏
  • 举报
回复
kingerq(多菜鸟) 你的验证还缺点
规则打分,每规则1分。
邮件用户名不能少于两位:1分
邮件名只能使用减号,字母,数字和下划线:1分
用户名减号,下划线不能出现在首尾:0分
域名只能使用减号,字母,数字:0分(不能用下划线)
域名首尾字母不能为减号:0分
@次数和位置检测:1分
最多只能使用二级域名作后缀:1分
现有域名限制检测(com,net,org等检测):0分
送4分给您,希望能够再接再厉,完善它.
此外现在中文邮件域名都出来,增加了难度,希望有朋友能给各规则。
多菜鸟 2004-10-30
  • 打赏
  • 举报
回复
/^[^\-_0-9][\w\-]*@[\w\-\.]+\.[a-zA-Z]{3}(\.[a-zA-Z]{2,3})?$/

我那个正则改成这样子就更符合EMAIL的要求了。
可以检测二级域名的邮件地址。
ttyp 2004-10-30
  • 打赏
  • 举报
回复
/*
===========================================
//是否是邮件
===========================================
*/
String.prototype.isEmail = function()
{
return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(this);
}
多菜鸟 2004-10-30
  • 打赏
  • 举报
回复
<form name="form1" method="post" action="" onSubmit="return chkmail()">
<script language="javascript">
function chkmail(){
var reg = /^[^\-_\.0-9][\w\-]+@[\w\-]+\.[a-zA-Z]{3}(\.[a-zA-Z]{2,3})?$/;
if(! reg.test(form1.mail.value)){
alert("Wrong Email address!");
form1.mail.focus();
return false;
}
return true;
}
</script>
<input name="mail" type="text" id="mail">
<input type="submit" name="Submit" value="提交">
</form>
刚写的,没有测试过,你试试看。
多菜鸟 2004-10-30
  • 打赏
  • 举报
回复
不好意思,发错了,这个是PHP的。
多菜鸟 2004-10-30
  • 打赏
  • 举报
回复
<?php
function emailIsRight($email) {
if (preg_match("^[^-_\.0-9][_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)) {
return 1;
}
return 0;
}
if(emailIsRight('y10k@963.net')) echo '正确<br>';
if(!emailIsRight('y10k@fffff')) echo '不正确<br>';
?>
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2004-10-30 02:12
社区公告
暂无公告