2014-01-27 67 views
0

我想在電子郵件中允許_javascript電子郵件正則表達式問題

但正則表達式我只是過濾這個。

HTML,

<input id="external_email_input" maxlength="85" type="text"> 
    <button id='email'>Send</button> 

JS,

$("#email").click(function(){ 
     var email = $("#external_email_input").val(); 
     if(!validateEmail(email)){ 
      alert("wrong format!!"); 
     }else{ 
      alert("correct!!"); 
     } 
    });  




function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 

的jsfiddle,

http://jsfiddle.net/rRnwb/1/

,如果我把[email protected]_test.com

它的回報s false

我該如何讓_成爲這裏的一個條件?

+0

只要把它所需的字符類。通過正則表達式驗證電子郵件並不總是一個好主意。 – Jerry

回答

3

使用<input type="email" />。刪除所有JavaScript。問題解決了。

+0

好吧....我必須支持IE8 :( – Canna

+0

''在IE8中工作,它只是不會有驗證,但沒關係,因爲驗證應該是服務器端的。 –

0

修改驗證以包含由Jerry在註釋中建議的下劃線(_)可解決問題。

驗證功能:

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"_]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9_]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 

更新小提琴:http://jsfiddle.net/rRnwb/2/

0

您的代碼是:

enter image description here

沒有_@符號,以滿足您輸入的郵件編號。

所以,你可以使用:

(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|((\w+\.)+[a-zA-Z]{2,})) 

FIDDLE DEMO

說明: enter image description here