求比我这个要好的email验证脚本
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日