2015-09-15 6 views
1

В регистрационной форме я должен указать только a-z A-Z 0-9 подчеркивание, тире и точки. Поэтому я определил пользовательский валидатор в методе загрузки AppServiceProvider следующим образом;Laravel 5.1 Создание пользовательских правил проверки

Validator::extend('valid_username', function ($attribute, $value, $parameters) 
      { 
        return preg_match('[a-zA-Z0-9_\-\.]', $value); 
      } 

Но проверка не проходит. что я делаю неправильно?

ответ

1

Это выглядит нормально, за исключением того, preg_match требует / в начале и в конце шаблона, и вы также должны соответствовать начало/конец строки, а также сказать, что это, чтобы соответствовать более одного символа:

Validator::extend('valid_username', function ($attribute, $value, $parameters) 
{ 
    return preg_match('/^[a-zA-Z0-9_\-\.]+$/', $value); 
} 

Ваш текущий шаблон подтвердит только тот факт, что есть один из этих символов, а не только эти символы.

+0

Теперь он проходит во всех случаях! –

+0

Как вы это понимаете? Проходит ли оно для ожидаемых случаев, или оно передает для имени пользователя, такого как «имя пользователя!»? – samlev

+0

Большое спасибо. Это сработало. –

Смежные вопросы