Laravel 验证整数或特定单词

Laravel Validation for integers or specific word

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

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

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

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

您可以使用不带 requiredregex 规则(如果您不介意针对空字段显示单独的错误消息):

'location' => ['regex:/^(?:\d+|all)$/']

这意味着输入值应该是 \dall

$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 )不会通过