laravel5.1 验证号码

laravel5.1 validate number

如何使用 laravel 验证器验证数字。在我的例子中,我需要验证数字是否在“1.00”和“50.00”之间。

作为数字对之间的分隔符“.”和“,”应该被允许。该数字应只有两位小数。有没有办法结合使用标准 laravel 验证器来完成这项工作?

使用正则表达式,正则表达式应符合以下要求:

从 0-9 开始(可能有 2 个数字)

接着是一个。或一个,

后跟 0-9(可能有 2 个数字)

或简单数字,如 1-9,不带点和逗号

总共应允许 1 到 50 之间的数字。 此正则表达式应用于预付费系统,用户应该能够在其中充值 他们的帐户从 1 到 50。因此,像 1.00 和 1,00 这样的条目应该与 1 或 2 一样有效。 50.00 是金额的最大值。最低 1.00。

您可以像这样使用正则表达式:

   $rules = [
       'field' => 'regex:/^\d*(\.\d{2})?$/'
   ];

PS:这个工具可能很有用https://regex101.com/

我将创建以下请求 class:

<?php

namespace App\Http\Requests;

class TestRequest extends Request
{
    public function rules()
    {
        return [
            'number' => [
                'required',
                'regex:/^\d{1,2}(\.\d{1,2})?$/',
                'numeric',
                'min:1',
                'max:50'
            ],
        ];
    }

    public function authorize() {
        return true;
    }

    public function all() {
        $data = parent::all();
        if (isset($data['number'])) {
            $data['number'] = str_replace(',','.', $data['number']);
        }

        return $data;
    }
}

并在 Controller 中注入此请求 class:

public function test(TestRequest $request)
{
      dd($request->all());    
}

这是您要查找的正则表达式:

/^((([1-4][0-9]|[1-9])([,.]\d{1,2})?)|(?:50([,.]0{1,2})?))$/