Search code examples
phpregexlaravellaravel-validation

Laravel preg_match(): Unknown modifier ']'


Im wokring on Laravel 4.2. Im trying to use validator to validate a name field with regex here is my rule below:

public static $rules_save = [
    'name'      => 'required|regex:/[XI0-9/]+/|unique:classes'
];

But as soon as I call the rule to be validated an error is thrown see below:

preg_match(): Unknown modifier ']'

In the following location:

protected function validateRegex($attribute, $value, $parameters)
    {
        $this->requireParameterCount(1, $parameters, 'regex');

        return preg_match($parameters[0], $value); // **ON THIS LINE**
    }

Solution

  • Since you need to include a / into the character class, you need to either esacpe it:

    'name'      => 'required|regex:/[XI0-9\/]+/|unique:classes'
                                          ^
    

    Or use other regex delimiters.

    When using the PCRE functions, it is required that the pattern is enclosed by delimiters. A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.

    Often used delimiters are forward slashes (/), hash signs (#) and tildes (~).