2011-11-19 21 views
7
validación

Normalmente sencilla de correo electrónico es:Javascript múltiples expresiones regulares correo electrónico de validación

/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/ 

Esto validará correo electrónico como [email protected]

Pero cómo validar si el correo electrónico es múltiple?

entry 1: [email protected], [email protected], [email protected] 
entry 2: [email protected] , [email protected] , [email protected] 
entry 3: [email protected], [email protected] , [email protected] 
entry 4: [email protected] 

Este correo electrónico es una posible entrada que el usuario ingresará. Además, espere que haya 2 o 3 o 4 o más correos electrónicos a veces.

Gracias por las respuestas.

Respuesta

11

Dividir los correos electrónicos en una coma y validar las entradas

var x = getEmails(); 
var emails = x.split(","); 
emails.forEach(function (email) { 
    validate(email.trim()); 
}); 

Dónde getEmails() obtiene los mensajes de correo electrónico desde la página, y la validación se ejecuta su expresión regular contra los mensajes de correo electrónico

1

Usted debe ser capaz de dividir la entrada por comas, y luego prueba las subentradas de correo electrónico individuales contra la expresión regular.

var valid = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
var entries = entry.split(","); 

if(valid.test(entries[0]))... //or however your testing against the regex 

Es posible que también desee recortar los espacios en blanco antes de probar cualquiera de las subcadenas de correo electrónico eliminado.

0

Prueba esto para la validación de jQuery:

jQuery.validator.addMethod("multiemail", function (value, element) { 
    if (this.optional(element)) { 
     return true; 
    } 
    var emails = value.split(','), 
     valid = true; 
    for (var i = 0, limit = emails.length; i < limit; i++) { 
     value = emails[i]; 
     valid = valid && jQuery.validator.methods.email.call(this, value, element); 
    } 
    return valid; 
}, "Invalid email format: please use a comma to separate multiple email addresses."); 
4

probar esto

function validateEmails(string) { 
     var regex = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
     var result = string.replace(/\s/g, "").split(/,|;/);   
     for(var i = 0;i < result.length;i++) { 
      if(!regex.test(result[i])) { 
       return false; 
      } 
     }  
     return true; 
    } 

aceptar tanto coma y punto y coma como separador de

0

function validateEmail(emailAddress) { 
 
    var emailPattern = /^(([^<>()[\]\\.,;:\[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 emailPattern.test(emailAddress); 
 
} 
 

 
function validate() { 
 
    $("#result").text(""); 
 
    var email = $("#emailAddress").val(); 
 
    if (validateEmail(email)) { 
 
    $("#result").text(email + " validation successful"); 
 
    $("#result").css("color", "white"); 
 
    } else { 
 
    $("#result").text(email + " validation failed"); 
 
    $("#result").css("color", "red"); 
 
    } 
 
    return false; 
 
} 
 

 
$("form").bind("submit", validate);
.divSection{ 
 
    text-align: center; padding: 8%; 
 
    } 
 
.pSection{ 
 
    border: none; color: white; padding: 10px 100px; text-align: center; text-decoration: none; display: inline-block; font-size: 24px; margin: 3% 0%; border-radius: 6px; -webkit-transition-duration: 0.4s; transition-duration: 0.4s; font-family: Roboto-Regular,Helvetica,Arial,sans-serif; background-color: #4184f3; margin: auto;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="divSection"> 
 
<form action="dashboard/user/profile" method="POST"> 
 
    <input id="emailAddress" placeholder="Enter Email" value="[email protected]"> 
 
    <input type='submit' value="check"> 
 
</form> 
 
    </div> 
 

 
<div class="divSection" > 
 
<p class="pSection" id='result'></p> 
 
</div>

Este es el código Javascript para comprobar si el correo electrónico contiene más de un @ caracteres

var count=0; 
email = "[email protected]@gmail.com"; 
alert(email); 
for(i =0; i<email.length;i++){ 
if(email.charAt(i) == "@"){ 
count++; 
}} 
if(count>1){ 
    alert("not ok") 
} else { 
    alert("ok") 
} 

Otra alternativa es mediante el uso de la tónica habitual del correo electrónico

var pattern= /^(([^<>()\[\]\\.,;:\[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,}))$/; 
re.test(email); 
Cuestiones relacionadas