RFC里面说了,@前面是用户名,后面是主机名,其它的就没什么特别的要求了,只要@是在中间的,并且用户名和主机名没有保留字符(@就是一个保留字符),从语法上来说就没有错误了。

解决方案 »

  1.   

    //过滤非法字符
    function String.prototype.trim(){return  this.replace(/(^\s*)|(\s*$)/g, "");}
    //只能输入正确的日期格式
    function isDate(s,msg){
    if (s.value.length==0)return true;
    if (!msg)msg='请输入正确的日期格式﹐例如2003-05-06';
    var str=s.value
    var reg = /^(\d{4})(-|\/)(0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12][0-9]|3[01])$/g;
    var r = reg.exec(str);
    if(r==null){alert(msg);s.select();return false;}
    var d = new Date(r[1], r[3]-1,r[5]);
    var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
    var reg=/(\/|-)(0*)( *)([1-9])/g
    var t=s.value.replace(reg,'$1$4')
    if (newStr==t){return true;}
    s.focus();
    s.select();
    alert(msg);
    return false;
    }
    //只能输入标准的E-MAIL邮件格式
    function isEmail(s,msg){
    if (s.value.length==0)return true;
    var reg = /^([a-z]){1,}([\.a-z0-9_\-]){1,}([a-z0-9]){1,}@([a-z0-9_-]){3,}(\.([a-z0-9]){2,4}){1,2}$/gi;
    if (reg.test(s.value))return true;
    else {
    alert((msg?msg:'请输入标准的E-MAIL邮件格式,例如[email protected]'));
    s.focus();
    s.select()
    return false;
    }
    }
    //只能输入英文
    function isEnglish(s,msg){
    var reg=/^[a-z]*$/gi
    if(reg.test(s.value))return true
    else {
    alert((msg?msg:'该栏只能输入英文﹐请改正'));
    s.focus();
    s.select();
    return false;
    }
    }
    //只能输入中文
    function isChinese(s,msg){
    var reg = /[^\u4E00-\u9FA5]/g;
    if (reg.test(s.value)){
    s.focus();
    s.select()
    alert((msg?msg:'该栏只能输入中文﹐请改正'));
    return false;
    }
    return true;
    }
    //不能输入中文
    function isNoChinese(s,msg){
    var reg = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
    if (reg.test(s.value)){s.select()
    alert((msg?msg:'该栏不能输入中文和全角符号,请改正'));
    return false;
    }
    return true;
    }
    //不能为空
    function isZero(s,msg){
    var str=s.value.trim();
    if (str.length!=0)return true
    else {
    alert((msg?msg:'该栏不能为空,请改正'));
    s.focus();
    s.select();
    return false;
    }
    }
    //只能输入数字
    function isNumeric(s,msg){
    if (s.value*1!=s.value){
    alert((msg?msg:'该栏只能输入数字﹐请改正'))
    s.focus();
    s.select()
    return false
    }
    return true
    }//只能输入英文和数字
    function isEN(s,msg){
    var reg=/^[a-z0-9.]*$/gi
    if(reg.test(s.value))return true
    else {
    alert((msg?msg:'该栏只能输入英文和数字,请改正'));
    s.focus();
    s.select();
    return false;
    }
    }
    //函数接口
    function chkForm(frmName){
    this.frmName=frmName;
    this.chkFunBody = "";
    this.isPass = function(eleName,chkFun,strMsg){
    this.chkFunBody += chkFun+"("+this.frmName+"."+eleName
    if(strMsg)this.chkFunBody +=",\""+strMsg+"\""
    this.chkFunBody +=") && "
    var tmp = "return( "+ this.chkFunBody +" true)"
    eval(this.frmName+".onsubmit=Function('"+tmp+"');");
    }
    }function checkvalue(str)
    {
    var checkOK = "0123456789-.,";
    var checkStr = str;
    var allValid = true;
    var validGroups = true;
    var decPoints = 0;
    var allNum = "";
    var countNumberAfterDot;
    var countYN; countYN=0;
    countNumberAfterDot=0; for (i = 0;  i < checkStr.length;  i++)
    {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
    {
    if (ch == checkOK.charAt(j))
    break;
    }
    if (j == checkOK.length)
    {
    allValid = false;
    break;
    }
    if (ch == ".")
    {
    decPoints++;
    countYN=1;
    }
    if (ch == "," )
    {
    if (decPoints != 0)
    {
    validGroups = false;
    break;
    }
    } allNum+=ch; if (countYN==1){
    countNumberAfterDot++;}
    } if (!allValid)
    {
    alert("只能输入 数字 字符。");
    return (false);
    } if (decPoints > 1 || !validGroups || countNumberAfterDot >3)
    {
    alert("请输入一个有效数字。");
    return (false);
    } if (checkStr>999999999999.99 )
    {
    alert("您输入的数值过大,会导致溢出错误。");
    return (false);
    }
        if (checkStr<-999999999999.99)
        {
         alert("您输入的数值过小,会导致溢出错误。");
     return (false);
        }
    return true;
    }
    ----
    如何调用
    <SCRIPT LANGUAGE="JavaScript">
    var obj=new chkForm("form名字")obj.isPass("输入框","isEN");</SCRIPT>
      

  2.   

    这个应该没有一定的方法吧,不通网站的email的要求不一样
    比如:有的可以有“.”,有的就不可以,sina的就不行,163的就可以
      

  3.   

    function isEmail(theStr) {
    var atIndex = theStr.indexOf('@');
    var dotIndex = theStr.indexOf('.',atIndex);
    var flag = true;
    theSub = theStr.substring(0,dotIndex +1);
    if((atIndex <1) ||(atIndex != theStr.lastIndexOf('@')) || (dotIndex < atIndex +2) || (theStr.length <= theSub.length)){
    flag = false;
    }
    else{
    flag = true;
    }
    return (flag);
    }
      

  4.   

    呵呵!用redlaputa(吾心如秋思,爱随雨后归)的正则表达式吧。
      

  5.   

    redlaputa(吾心如秋思,爱随雨后归)的挺不错的
      

  6.   

    吾心如秋思,爱随雨后归我认为他的代码是不是太多了。。一个EMAIL的验正是不是得不偿失啊。。我不知道我的观点是否正确。
     yyfeng1982(遥遥) 的代码简单明了啊!!
      

  7.   

    建议看看struts的源码,看他验证email是怎么弄的
      

  8.   

    //校验邮件字段
    function checkmail(email)
    {   
    //email=trim(email)
    if (email!="")
    {
    //校验非法字符
    if (!checkStr(email))
    {
    alert("输入的E-mail格式不对!");
    return false;

    //.必须在@之后
    if ((email.indexOf("@") < 1) || (email.indexOf(".")<email.indexOf("@"))) 
    {
    alert("输入的E-mail格式不对!");
    return false;

    //@与.之间必须有字符串
    if ((email.indexOf(".")-email.indexOf("@"))<=1)   
    {
    alert("输入的E-mail格式不对!");
    return false;
    }
    //.后必须有字符
    if ((email.length-email.indexOf("."))<=1)   
    {
    alert("输入的E-mail格式不对!");
    return false;
    }
    //校验字符串中只允许有一个@和
    var j=0
    for( var i=0; i<email.length; i++ )
      if (email.charAt(i) == '@')  
      {
        j=j+1
      }
    if (j>1)
    {
    alert("输入的E-mail格式不对!");
    return false;


    return true;
    }//校验邮件域名
    function checkemaildomain(email)
    {  
    //email=trim(email)
    if (email!="")
    {
    //校验非法字符
    if (!checkStr(email))
    {
    alert("输入的邮件域名格式不对!");
    return false;

    //.必须在@之后,且@必须是第一位。
    if ((email.indexOf("@") > 0) || (email.indexOf(".")<email.indexOf("@"))) 
    {
    alert("输入的邮件域名格式不对!");
    return false;

    //@与.之间必须有字符串
    if ((email.indexOf(".")-email.indexOf("@"))<=1)   
    {
    alert("输入的邮件域名格式不对!");
    return false;
    }
    //.后必须有字符
    if ((email.length-email.indexOf("."))<=1)   
    {
    alert("输入的邮件域名格式不对!");
    return false;
    }
    //校验字符串中只允许有一个@和.
    var j=0
    for( var i=0; i<email.length; i++ )
      if (email.charAt(i) == '@')  
      {
        j=j+1
      }
    if (j>1)
    {
    alert("输入的邮件域名格式不对!");
    return false;


    return true;
    }
      

  9.   

    <form action="sucess.jsp" method="post" onsubmit="return check_Email(this)">
    ...请填写正确的email<input type="text" name="email">
    <INPUT TYPE="submit" value="提交">
    </form>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function check_Email(obj) {
    var pattern = /^\w+@\w+\.\w{1,3}$/g;
    if (!pattern.test(obj.email.value)){alert("请输入正确的邮件地址!!");return false;}
    }
    //-->
    </SCRIPT>
      

  10.   

    function validateEmail(strValue) {
    if(strValue=="")return  true;
    var objRegExp  = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i;
    return objRegExp.test(strValue);
    }这个够简单了吧