validacion - validar formulario javascript html5
Extraiga todas las direcciones de correo electrónico de texto masivo usando jquery (6)
Aquí es cómo puede abordar esto:
HTML
<p id="emails"></p>
JavaScript
var text = ''[email protected], "assdsdf" <[email protected]>, "rodnsdfald ferdfnson" <[email protected]>, "Affdmdol Gondfgale" <[email protected]>, "truform techno" <[email protected]>, "NiTsdfeSh ThIdfsKaRe" <[email protected]>, "akasdfsh kasdfstla" <[email protected]>, "Bisdsdfamal Prakaasdsh" <[email protected]>,; "milisdfsfnd ansdfasdfnsftwar" <[email protected]>'';
function extractEmails (text)
{
return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+/.[a-zA-Z0-9._-]+)/gi);
}
$("#emails").text(extractEmails(text).join(''/n''));
Resultado
[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
Fuente: Extraiga el correo electrónico de texto masivo (con expresiones regulares, JavaScript y jQuery)
Demo 2 Aquí usando jQuery cada función de iterador
Estoy teniendo este texto a continuación:
[email protected], "assdsdf" <[email protected]>, "rodnsdfald ferdfnson" <[email protected]>, "Affdmdol Gondfgale" <[email protected]>, "truform techno" <[email protected]>, "NiTsdfeSh ThIdfsKaRe" <[email protected]>, "akasdfsh kasdfstla" <[email protected]>, "Bisdsdfamal Prakaasdsh" <[email protected]>,; "milisdfsfnd ansdfasdfnsftwar" <[email protected]>
Aquí los correos electrónicos están separados por ,
o ;
. Quiero extraer todos los correos electrónicos presentes anteriormente y almacenarlos en una matriz. ¿Hay alguna forma fácil de usar expresiones regulares para obtener todos los correos electrónicos directamente?
La función anterior es compatible con RFC2822 de acuerdo con Regexr.com
ES5:
var extract = function(value) {
var reg = /[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:/.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g;
return value && value.match(reg);
}
ES6:
const reg = /[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:/.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g
const extract = value => value && value.match(reg)
No necesitas jQuery para eso; El propio JavaScript soporta expresiones regulares integradas.
Echa un vistazo a la expresión regular para obtener más información sobre el uso de expresiones regulares con JavaScript.
Aparte de eso, creo que encontrará la respuesta exacta a su pregunta en algún otro lugar sobre Desbordamiento de pila: Source
Puedes usar esta expresión regular:
var re = /(([^<>()[/]//.,;:/s@/"]+(/.[^<>()[/]//.,;:/s@/"]+)*)|(/".+/"))@((/[[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,}))/g;
Puedes extraer los correos electrónicos así:
(''[email protected], "assdsdf" <[email protected]>, "rodnsdfald ferdfnson" <[email protected]>, "Affdmdol Gondfgale" <[email protected]>, "truform techno" <[email protected]>, "NiTsdfeSh ThIdfsKaRe" <[email protected]>, "akasdfsh kasdfstla" <[email protected]>, "Bisdsdfamal Prakaasdsh" <[email protected]>,; "milisdfsfnd ansdfasdfnsftwar" <[email protected]>'').match(re);
//["[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]"]
Sólo una actualización de la respuesta aceptada. Esto no funciona para los signos "más" en la dirección de correo electrónico. GMAIL es compatible con [email protected].
He actualizado a:
return text.match(/([a-zA-Z0-9._+-]+@[a-zA-Z0-9._-]+/.[a-zA-Z0-9._-]+)/gi);
function GetEmailsFromString(input) {
var ret = [];
var email = //"([^/"]+)/"/s+/<([^/>]+)/>/g
var match;
while (match = email.exec(input))
ret.push({''name'':match[1], ''email'':match[2]})
return ret;
}
var str = ''"Name one" <[email protected]>, ..., "And so on" <[email protected]>''
var emails = GetEmailsFromString(str)