2015-06-11 21 views
6

Tôi phải xác thực trường email có thể chứa nhiều địa chỉ email được phân tách bằng dấu (;). Sau đây là mã tôi đã sử dụngXác thực email trong jQuery bằng cách sử dụng RegExp

$("body").find(".reqEmail").filter(function(){ 
     var regex = new RegExp(/^[_A-Za-z0-9-]+[^(),:;<>\\[\\]@]*@[^(),:;<>\\[\\]@]*(\\.[A-Za-z]{2,})+$/);///^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
     var email=$(this).val() 
     if(regex.test(email)==false){ 
       e.preventDefault(); 
       $(this).css("border","solid 1px red"); 
       $(this).parent().find("#ReceAppEmail").html("Invalid Email!!"); 
       } 
       else{return true;} 
    }); 

Luôn đưa ra thông báo lỗi, ngay cả khi tôi chèn 1 địa chỉ email. Tôi không thể tìm thấy nơi tôi đã đi sai. bất kỳ đề xuất?
FYI: Điều này được bao gồm trong biểu mẫu gửi (onsubmit)

+0

http://stackoverflow.com/questions/46155/validate-email-address-in-javascript –

+0

Bạn có thể chia sẻ thông báo lỗi với chúng tôi không? – Stef

+0

Bạn cần 'var result = value.split (", ")' tách chúng –

Trả lời

2

Bạn có thể lấy tất cả các địa chỉ email cách nhau bởi dấu chấm phẩy bằng cách sử dụng regex dưới đây:

/(?:((?:[\w-]+(?:\.[\w-]+)*)@(?:(?:[\w-]+\.)*\w[\w-]{0,66})\.(?:[a-z]{2,6}(?:\.[a-z]{2})?));*)/g 

http://regexr.com/3b6al

+0

tuyệt vời nhưng tôi nghĩ OP không muốn nhận email hợp lệ, OP actiully muốn xác thực tất cả các email được phân tách bằng ',' –

+0

Vâng, bạn hoàn toàn đúng. Tôi đã trả lời trước khi anh ấy thêm mã của mình để nó có ý nghĩa vào thời điểm đó. – rsnorman15

+0

Regex ở trên hơi khác so với việc chỉ xác thực địa chỉ email mà nó thực sự xác thực tất cả các email được phân tách bằng dấu chấm phẩy. Các nhóm bị bắt phải là các email riêng lẻ. – rsnorman15

1

Bạn có thể thực hiện điều này bằng mã bên dưới.

function validatecommSeptEmail(commSeptEmail) 
{ 
    var regex = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}$/; 
    return (regex.test(commSeptEmail)) ? true : false; 
} 

function validateMultiplecommSeptEmails(emailcntl, seperator) 
{ 
    var value = emailcntl.value; 
    if (value != '') { 
     var result = value.split(seperator); 
     for (var i = 0; i < result.length; i++) { 
      if (result[i] != '') { 
       if (!validatecommSeptEmail(result[i])) { 
        emailcntl.focus(); 
        alert('Please check, `' + result[i] + '` email addresses not valid!'); 
        return false; 
       } 
      } 
     } 
    } 
    return true; 
} 

Cách sử dụng?

onblur="validateMultiplecommSeptEmails(this,',');" 
+0

Câu trả lời này cũng hoạt động nhưng tôi không thể chấp nhận hai câu trả lời. Nhưng câu trả lời của @ rsnorman15 gần hơn với yêu cầu của tôi – Kuru

+0

Tốt thôi nếu bạn không thể chấp nhận nó, vì SO là để giúp lập trình viên trên toàn thế giới, vì vậy nó không quan trọng nếu bạn chấp nhận hay không, nhưng chúng tôi quan tâm nhiều hơn có thể giúp bạn. –

0

Hãy thử điều này

function validateEmail(email) { 
    var regixExp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; 
    $(".reqEmail").css("border","solid 1px red"); 
    $("#ReceAppEmail").html("Invalid Email!!"); 
    return regixExp.test(email); 
} 
Các vấn đề liên quan