0

メールアドレスを確認しています。しかし、これは私が適切なTLDを使用しているかどうかを検証していません。.com、.in、.org、.govおよび.joに対してのみ検証したいのですが、どうすればよいですか?私のコードは次のようなものです:

function validateConsumerEmail(){
    email = document.getElementById('customer_email').value;
    if ((email == null)||(email == "")){
        alert("Please Enter a Valid Consumer Email Address...")
        document.consumerEmail.customer_email.focus();
        return false
    }
    if (echeck(email)==false){
       email=""
       document.consumerEmail.customer_email.focus();
       return false
    }
    if(email != ''){
      var splitting = email.split('@');
      if(!isNaN(splitting[0])){
    alert('Please provide proper email address...');
    document.consumerEmail.customer_email.focus();
    return false;
      }
      if(splitting[0].length<6 || splitting[0].length > 250){
    alert('Please provide proper email address...');
    document.consumerEmail.customer_email.focus();
    return false;
       }

    }
}

ここで、customer_emailはフィールド名のIDです。

function echeck(str) {

   var at="@"
   var dot="."
   var lat=str.indexOf(at)
   var lstr=str.length
   var ldot=str.indexOf(dot)
   if (str.indexOf(at)==-1){
      alert("Please provide valid email ID.");
      return false
   }
   if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
      alert("Please provide valid email ID.");
      return false
   }

   if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
     alert("Please provide valid email ID.");
     return false
   }

   if (str.indexOf(at,(lat+1))!=-1){
     alert("Please provide valid email ID.");
     return false
   }

   if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
    alert("Please provide valid email ID.");
    return false
   }

   if (str.indexOf(dot,(lat+2))==-1){
    alert("Please provide valid email ID.");
    return false
   }

   if (str.indexOf(" ")!=-1){
    alert("Please provide valid email ID.");
    return false
   }

  return true                   
}
4

1 に答える 1

0

これを試して。電子メール アドレスの検証には、実際には REGEX を使用する必要があります。現在のコードでは、あらゆる種類の無効な電子メールを許可し、有効な電子メールの多くを許可していないためです。

とはいえ、有効な電子メールを真に検証できることは議論のポイントであり、何年も前からありました. 私の例は、この e-mail-matcher REGEXの適応バージョンに基づいています。

また、コードを多少簡略化しました。echeckあなたがこれを提供しなかったので、私は への電話を取りやめました。必要に応じて追加してください。

function validateConsumerEmail(){

    //prep
    var email = document.getElementById('customer_email'), error;

    //validate
    if (!email.value || !/^[\w\.%\+\-]+@[a-z0-9.-]+\.(com|gov|in|jo|org)$/i.test(email.value))
        error = 'Please enter a valid e-mail, with the domain .com, .in, .org, .jo or .gov';

    //feedback
    if (error) {
        email.focus();
        return false;
    } else {
        //OK - do something here
    }

}

</p>

于 2012-07-05T07:51:27.160 に答える