Я использую правила проверки в Laravel и пытаюсь проверить количество символов в числе.
Это моя попытка:
protected static $rules = [
'zip_code' => 'required|size:5|integer'
];
К сожалению, это проверяет, что почтовый индекс является номером 5, а не то, что почтовый индекс состоит из 5 символов. Какие правила мне нужно установить, чтобы убедиться, что почтовый индекс содержит ровно 5 символов, независимо от фактических чисел?
Почтовый индекс длиной 5 цифр может содержать начальные нули (северо-восток США). Проверка «цифр» Laravel удаляет начальные нули, в результате чего вам нужно использовать шаблон регулярных выражений:
protected static $rules = [
'zip_code' => 'required|regex:/\b\d{5}\b/'
];
Это гарантирует, что почтовый индекс всегда будет состоять из 5 цифр. Более подробная информация в Laravel Docs
Согласно Laravel 5.3:
Если вы проверяете против поле персонажа который содержит число, и вы хотите знать, если это максимум 5 или менее цифр тогда вы можете использовать:
protected static $rules = [
'zip_code' => 'required|max:5|string'
];
Если вы проверяете против целочисленное поле и вы хотите знать, если он содержит максимум 5 или менее цифр затем используйте:
protected static $rules = [
'zip_code' => 'required|max:99999|integer'
];
Если вы проверяете против целочисленное поле и вы хотите знать, если он содержит точные 5 цифр тогда вы можете использовать:
protected static $rules = [
'zip_code' => 'required|digits:5|integer'
];
Хотя в последнем случае почтовые индексы с ведущими нулями будут обрезаны, и поэтому для почтовых индексов я рекомендую использовать preg_match для проверки. Определите пользовательское правило проверки в вашем AppServiceProvider файл под ботинок функция. Для справки смотрите это:
https://laravel.com/docs/5.3/validation#custom-validation-rules
и вы должны использовать varchar (10) (строка, 10 в laravel) вместо целого числа для почтовых индексов, потому что:
Вы не можете определить размер целого числа в MySQL, но вы можете для varchar.
Почтовые индексы могут быть длиной 10 символов с расширением (zip + 4, например: 12345-1234).
Я надеюсь, что это помогает
Вы получаете это неправильно вместо размера: 5 попробуйте мин: 5 | макс: 5