Laravel 5 验证接受最多 4 个数字的逗号分隔字符串
Laravel 5 Validation accept comma separated string with max 4 numbers
Laravel 5 验证接受最多 4 个数字的逗号分隔字符串
示例-
1. 1,2,3,4 --- Accepted
2. 1,2 --- Accepted
3. 1,2,3,4,5 --- Rejected
注意:我可以通过先将字符串转换为数组然后验证请求来完成此任务,但我正在寻找解决相同问题的最佳方法。
您可以为此创建自己的custom Rule。
php artisan make:rule MaxNumbers
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class MaxNumbers implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
return count(explode(',', $value)) < 5;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The :attribute must be max 4 numbers.';
}
}
并使用它:
use App\Rules\MaxNumbers;
$request->validate([
'field_name' => ['required', new MaxNumbers],
]);
在你的控制器中用这个验证它:
$this->validate(Request::instance(), ['field_name'=>['required','regex:/^\d+(((,\d+)?,\d+)?,\d+)?$/']]);
您可以使用以下正则表达式规则:
$this->validate($request, [
'field_name' => 'regex:/^[0-9]+(,[0-9]+){0,3}$/'
]);
Laravel 5 验证接受最多 4 个数字的逗号分隔字符串
示例-
1. 1,2,3,4 --- Accepted
2. 1,2 --- Accepted
3. 1,2,3,4,5 --- Rejected
注意:我可以通过先将字符串转换为数组然后验证请求来完成此任务,但我正在寻找解决相同问题的最佳方法。
您可以为此创建自己的custom Rule。
php artisan make:rule MaxNumbers
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class MaxNumbers implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
return count(explode(',', $value)) < 5;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The :attribute must be max 4 numbers.';
}
}
并使用它:
use App\Rules\MaxNumbers;
$request->validate([
'field_name' => ['required', new MaxNumbers],
]);
在你的控制器中用这个验证它:
$this->validate(Request::instance(), ['field_name'=>['required','regex:/^\d+(((,\d+)?,\d+)?,\d+)?$/']]);
您可以使用以下正则表达式规则:
$this->validate($request, [
'field_name' => 'regex:/^[0-9]+(,[0-9]+){0,3}$/'
]);