Reputation: 65
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
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