Matlaya D Monaim
Matlaya D Monaim

Reputation: 53

laravel validation method returns an error

i am trying to validate some inputs using this :

$request->validate([
        'prenom' => 'required',
        'nom' => 'required',
        'telephone' => ['required | regex:/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/|digits:10'],
        'password' => 'required |string|min:8|confirmed',
        'confirm_pass' => 'required',
        'email' => 'required|email|max:255|string|unique:users'
            ]);

but it gives me an error:

Method Illuminate\Validation\Validator::validateRequired|Regex does not exist.

please any idea how to fix it ?!

Upvotes: 1

Views: 204

Answers (3)

Switi
Switi

Reputation: 379

use Validator;

add on top of controller

Upvotes: 0

Switi
Switi

Reputation: 379

$validatedData = $request->validate([
        'prenom' => 'required',
        'nom' => 'required',
        'telephone' => ['required | regex:/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/|digits:10'],
        'password' => 'required |string|min:8|confirmed',
        'confirm_pass' => 'required',
        'email' => 'required|email|max:255|string|unique:users'
            ]);

Upvotes: 0

STA
STA

Reputation: 34678

The pipe | sign is available in your regular expression pattern so it's conflicting with the separator. When using the regex pattern, it may be necessary to specify rules in an array instead of using pipe delimiters, change your code to :

'telephone' => array(
      'required',
      'regex:/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/',
      'digits:10'
)

Upvotes: 3

Related Questions