> Faqs > Validar el dominio de un email con la validación de Laravel

Validar el dominio de un email con la validación de Laravel

Quisiera validar que un email pertenece a un dominio determinado en Laravel.

Usando el sistema de validación de Laravel, aparte de comprobar que el email sea correcto y esas cosas, quisiera asegurarme que el email introducido está dentro de un dominio en particular.

por ejemplo que sea del dominio "example.com" y por lo tanto acabe en "@example.com". Me imagino que tengo que usar expresiones regulares, pero me pierdo un poco.

Respuestas

Suponiendo que quieres restringir el email a un único dominio, puedes probar también con esta validación.

$validatedData = $request->validate([
    'email' => ['required', 'email', 'regex:/(.*)@example\.com$/i'],
]);

Recuerda que cuando usas validaciones por expresiones regulares en Laravel tienes que colocar las distintas reglas de validación en notación de array, en vez de concatenar las reglas mediante tuberías o pipes "|".

Así podrás validar el dominio del email, pero también estamos validando el propio email con la regla "email".

Guillermo
126 4 8 10

Hola Julian,

Creo que la expresion regular que buscas es esta:

(?i)(\W|^)[\w.\-]{0,25}@(dominio1|dominio2|example)\.com(\W|$)

Puedes probarla desde este enlace

https://rubular.com/

Espero que te sirva de ayuda, un saludo

David
95 4 11