Forcela8
Forcela8

Reputation: 65

Custom message Validate Regex Laravel

I've been trying for a while to create custom messages for regexes. So far, I have been able to get this as a message.

But I would like for each regex to be able to put messages, example: for the regex[A-Z] I would like them to have their own custom messages and not have the same and unique message for all of them.

$req->validate([
            'login'=> 'required|unique:user',
            'email' => 'required|unique:user|email|regex:/(.+)@(.+)\.(.+)/i',
            'password' => [
                'required',
                'min:8',             // must be at least 10 characters in length
                'confirmed',
                'regex:/[a-z]/',      // must contain at least one lowercase letter
                'regex:/[A-Z]/',      // must contain at least one uppercase letter
                'regex:/[0-9]/',
                'regex:/[@$!%*#?&]/' // must contain a special character
            ],
            'password_confirmation' => 'required'
        ], [
            'login.unique' => "Le nom d'utilisateur est déjà pris",
            'email.unique' => "L'adresse mail est déjà utilisé",
            'required' => 'Le champ est obligatoire',
            'email.regex' => 'Le champ doit respecter le format comme indiqué',
            'email.email'=> 'Le champ doit respecter le format comme indiqué',
            'password.min'=> 'Le mot de passe doit contenir au moins 8 caractères',
            'password.regex' => 'Le mot de passe doit contenir au moins 1 majuscule, 1 minuscule et un caractère spéciale',
            'password.digits_between' => 'Le mot de passe doit contenir au moins 1 chiffres et maximum 10',
            'password.confirmed' => 'Les deux mots de passes doivent être similaire',
        ]);

I would like something like this 'regex:/[a-z]/'=> 'One letter between a to z'

Thank a lot

Upvotes: 0

Views: 433

Answers (1)

Elisha Senoo
Elisha Senoo

Reputation: 3594

Try this:

$req->validate([
        'login'=> 'required|unique:user',
        'email' => 'required|unique:user|email|regex:/(.+)@(.+)\.(.+)/i',
        'password' => [
            'required',
            'min:8',             // must be at least 10 characters in length
            'confirmed',
            'regex:/[a-z]/',      // must contain at least one lowercase letter
            'regex:/[A-Z]/',      // must contain at least one uppercase letter
            'regex:/[0-9]/',
            'regex:/[@$!%*#?&]/' // must contain a special character
        ],
        'password_confirmation' => 'required'
    ], [
        'login.unique' => "Le nom d'utilisateur est déjà pris",
        'email.unique' => "L'adresse mail est déjà utilisé",
        'required' => 'Le champ est obligatoire',
        'email.regex' => 'Le champ doit respecter le format comme indiqué',
        'email.email'=> 'Le champ doit respecter le format comme indiqué',
        'password.min'=> 'Le mot de passe doit contenir au moins 8 caractères',
        'password.regex.0' => 'Le mot de passe doit contenir au moins 1 majuscule',
        'password.regex.1' => 'Le mot de passe doit contenir au moins 1 minuscule',
        'password.regex.3' => 'Le mot de passe doit contenir au moins un caractère spéciale',
        'password.digits_between' => 'Le mot de passe doit contenir au moins 1 chiffres et maximum 10',
        'password.confirmed' => 'Les deux mots de passes doivent être similaire',
    ]);

Upvotes: 1

Related Questions