2012-04-29 5 views
0
//if HTML5 input email input is not supported 
if(type == 'email'){  
    if(!Modernizr.inputtypes.email){ 
     var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@([a-zA-Z0-9\-])+\.+([a-zA-Z0-9]{2,4})+$/;    
     if(!emailRegEx.test(value)){ 
      this.focus(); 
      formok = false; 
      errors.push(errorMessages.email + nameUC); 
      return false; 
     } 
    } 
} 

これは、電子メールの形式が正しいかどうかを確認するためのJavaScriptの正規表現です。しかし、自分で試してみると、何のエラーも表示されません。私は間違って何をしていますか?正規表現の電子メールの確認エラー - JavaScriptを使用

+5

質問のタイトルに大文字の匂いがします。そして、この正規表現は恐ろしいです。 4文字より長いTLDがあり、 '+'は電子メールアドレスのローカル部分で完全に有効です。 IDNでも失敗します。 – ThiefMaster

答えて

1

電子メールアドレスに実際に適合する正規表現を使用する必要があります。あなたの現在のものは、受け入れられない有効なトンのトンがあるので完全に壊れています。

正規表現がそのような良いアイデアではない理由と詳細については、http://www.regular-expressions.info/email.htmlを参照してください。

我々はRFC 2822のより実用的な実装の場合を得る:ここではregular-expressions.infoは、この正規表現について言っているのです

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? 

とにかく、ここでおそらくあなたのニーズに合うものです二重引用符と大括弧を使用して構文を省略します。それは今日でも実際に使用されているすべての電子メールアドレスの99.99%と一致します。

+0

私はregexを使わないことに決め、電子メールのhtml 5検証に頼っています。それは私が知っていると一貫性がないし、オペラは*。*のエラーを表示しないが、メールは私に来ない。しかしそれでも使える – showbiz

関連する問題