Включить глобальный поиск в Laravel Validation

Я хочу, чтобы атрибут «имя» принимал только буквенные символы, цифры и пробелы. Все в порядке. Я протестировал его на http://regexr.com/, но когда я запускаю его с помощью Laravel, я получаю "preg_match (): Неизвестная ошибка модификатора 'g'"

public function rules()
{
    return
    [
        'name' => ['regex:/([A-Za-z0-9 ])*/g']
    ];
}

Я искал, но все, что я получаю, это «использовать метод preg_match_all()», но как я могу это сделать в этом?


person ggderas    schedule 21.03.2016    source источник


Ответы (1)


g является недопустимым модификатором PCRE в PHP.

Тем не менее, чтобы разрешить только буквенно-цифровые символы и пробелы, вы можете использовать правило вроде:

regex:/^[A-Za-z0-9 ]*$/

^ указывает начало строки, а $ конец.

В ситуациях, когда стандартных правил Laravel недостаточно, у вас также есть возможность создать пользовательский модификатор (где вы можете использовать preg_match_all сколько душе угодно).

person ceejayoz    schedule 21.03.2016
comment
Примечание. Я удалил () из вашего регулярного выражения, так как они здесь не нужны. - person ceejayoz; 22.03.2016
comment
Благодарю вас! Я создал пользовательскую проверку, и она работает как шарм! - person ggderas; 22.03.2016
comment
@ggderas Я не уверен, что preg_match_all это то, что ты хочешь. Он найдет буквенно-цифровые символы/пробелы, но не будет проверять, что строка состоит только из этих символов. Вместо этого рассмотрите возможность использования модифицированного регулярного выражения. - person ceejayoz; 22.03.2016