如何在验证规则中添加OR运算符?

时间:2019-11-25 08:23:04

标签: laravel validation digits

我正在Laravel 5.7中使用验证。我想在验证中使用10或16的数字作为id_number的数字。我该如何处理?有什么建议吗?

public function rules()
{
    return [
        'id_number' => 'required|digits:10 or digits:16',
    ];
}

2 个答案:

答案 0 :(得分:3)

您可以使用In验证规则。

return [
        'params.personal_information.id_number' => 'required|in:10,16',
    ];

或者使用Rule::in,您可以这样使用。

use Illuminate\Validation\Rule;

Validator::make($data, [
    'params.personal_information.id_number' => [
        'required',
        Rule::in([10, 16]),
    ],
]);

请检查文档中的more info

修改:-

作为评论,您希望id_number应该在10到16之间,以便可以使用between规则。

'params.personal_information.id_number' => 'required|between:10,16',

答案 1 :(得分:1)

您可以通过添加新的rule object或添加rule extension来创建自己的规则。

否则,regex-rule可能适用于您的情况:

'foo' => 'regex:/^(\d{10}|\d{16})$/i'

上面的ins代码未经测试