¿Cuál es la mejor manera de validar una dirección de correo electrónico en JavaScript con una expresión regular?
- pix0r
SourceUsar expresiones regulares es probablemente la mejor manera. Puede ver un montón de pruebas aquí (tomadas de cromo)
const validarEmail = (correo electrónico) => {
cadena de retorno (correo electrónico)
.toLowerCase()
.partido(
/^(([^<>()[\]\\.,;:\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,}))$/
);
};
Este es el ejemplo de una expresión regular que acepta Unicode:
const re =
/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+) *)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\ .,;:\s@\"]{2,})$/i;
Pero tenga en cuenta que uno no debe confiar solo en la validación de JavaScript. JavaScript se puede deshabilitar fácilmente. Esto también debe validarse en el lado del servidor.
Aquí hay un ejemplo de lo anterior en acción:
const validarEmail = (correo electrónico) => {
devolver email.match(
/^(([^<>()[\]\\.,;:\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,}) PS
);
};
const validar = () => {
const $resultado = $('#resultado');
const email = $('#email').val();
$resultado.texto('');
si (validar correo electrónico (correo electrónico)) {
$resultado.texto(correo electrónico + 'es válido :)');
$resultado.css('color', 'verde');
} demás {
$resultado.text(email + ' no es válido :(');
$resultado.css('color', 'rojo');
}
falso retorno;
}
$('#email').on('input', validar);
: