2012-04-29 130 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正則表達式檢查電子郵件格式是否正確。但是,當我自己嘗試它時,它顯示沒有任何錯誤.. @ ..它不檢查.com或任何最終。我究竟做錯了什麼?正則表達式電子郵件驗證錯誤 - 使用JavaScript

+5

我在你的問題標題中聞到了太多的大寫字母。這個正則表達式很糟糕。有超過4個字符的TLD,'+'在電子郵件地址的本地部分是完全有效的。它也在IDN上失敗。 – ThiefMaster 2012-04-29 10:51:56

回答

1

您需要使用真正適合電子郵件地址的正則表達式。由於有大量有效地址不能接受,因此您當前的地址已被徹底破壞。

請參閱http://www.regular-expressions.info/email.html以獲得更詳細的描述和論點,爲什麼一個正則表達式畢竟不是一個好主意。

總之,這裏的一個可能適合您的需求:

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

這裏是regular-expressions.info說,關於這個表達式:

我們獲得RFC 2822,如果更實際的實施我們使用雙引號和方括號省略了語法。它仍然會匹配今天實際使用的所有電子郵件地址的99.99%。

+0

我決定不使用正則表達式,並依靠HTML 5驗證電子郵件。這是不一致的,我知道,歌劇顯示*。*沒有錯誤,但郵件不會給我。但仍然可用 – showbiz 2012-04-29 11:36:50

相關問題