Laravel验证整数或特定单词

时间:2018-11-15 18:05:01

标签: php regex laravel laravel-5 laravel-validation

我正在创建一个验证规则,其中location属性可以具有任何integer或单词"all"的值。
对于整数验证,我使用以下规则:

'location' => 'required|integer'
,对于特定单词,我可以使用以下规则:

'location' => ['required', Rule::in([all])] 

如何将两个规则同时应用,以便location可以是任何整数,也可以是单词"all"? 正则表达式可以在这里提供任何帮助吗?

2 个答案:

答案 0 :(得分:2)

您可以使用不带regex的{​​{1}}规则(如果您不介意空白字段的单独错误消息):

required

这意味着输入值应为'location' => ['regex:/^(?:\d+|all)$/'] \d

答案 1 :(得分:1)

$this->validate($request, [
    'location' => [
        'required',
        'max:255',
        function ($attribute, $value, $fail) {
            if( is_int( $value ) || 'all' === $value ) {
                return true;
            } else {
                $fail($attribute.' is invalid.');
            }
        },
    ],
]);

但是请紧记::如果您通过表格发送integer,则会收到string。并且不会通过is_int( $value )检查。