laravel: 常用的驗證規則

刘宏缔的架构森林發表於2024-08-07

一,只包含中文:

'city'   => 'required|regex:/^[\x{4e00}-\x{9fa5}]+$/u',

正規表示式 [\x{4e00}-\x{9fa5}] 匹配所有中文字元,其中 \x{4e00} 是中文字元的開始碼,\x{9fa5} 是結束碼。

u 修飾符用於正規表示式,以支援 UTF-8 編碼

二,包含中英文數字

    public function rules()
    {
        return [
            'your_field' => ['required', 'regex:/^[A-Za-z0-9\x{4e00}-\x{9fa5}]+$/u']
        ];
    }

三,指字字串長度範圍

使用min/max規則
例子:最短2個字,最長11個字

        $message = [
            'city'  => '請選擇要搜尋的城市',
            'city.min'  => '長度最小2個字',
            'city.max'  => '長度最大11個字',
        ];

        $params = $this->validate($request, [
            //所屬城市
            'city'   => 'required|string|min:2|max:11|regex:/^[\x{4e00}-\x{9fa5}]+$/u',
        ],$message);

說明:laravel校驗時,對字串長度是按照utf-8計算的,對於中文來說很方便

四,指定字串固定長度

使用size規則

        //得到城市
        $message = [
            'city'  => '請選擇要搜尋的城市',
            'city.size'  => '長度固定11個字',
        ];

        $params = $this->validate($request, [
            //所屬城市
            'city'   => 'required|string|size:11|regex:/^[\x{4e00}-\x{9fa5}]+$/u',
        ],$message);

五,指定數字的大小範圍

        // 引數檢查
        $message = [
            'age'  => '使用者年齡錯誤',
        ];

        $params = $this->validate($request, [
            'age'   => 'required|integer|between:1,120',
        ],$message);

六,分別指定數字的最大值和最小值

最小值用min

        $message = [
            'age'  => '使用者年齡錯誤',
        ];

        $params = $this->validate($request, [
            'age'   => 'required|numeric|min:18',
        ],$message);

最大值用max

        // 引數檢查
        $message = [
            'age'  => '使用者年齡錯誤',
            'age.max'  => '高於最大值',
        ];

        $params = $this->validate($request, [
            'age'   => 'required|numeric|max:120',
        ],$message);

七,變數的值是固定的幾個,可以列舉:

用in列舉出可以選的值

            //租還是買型別: 7.租共享單車8.買腳踏車
            'type'   => 'required|in:7,8',

八,變數是陣列

            //商店型別 1.大型超市 2.夫妻店 3.社群底商 4.臨街門面 5.檔口攤位 6.百貨中心 7.其他
            'shop_type'=>'nullable|array',
            'shop_type.*'=>'required|in:1,2,3,4,5,6,7',

相關文章