## 驗證規則
* `alpha`驗證的字段必須完全是字母字符。
* `alpha_dash`正在驗證的字段可能包含字母數字字符以及破折號和下劃線。
* `alpha_space`正在驗證的字段可能包含字母數字字符以及破折號、下劃線和空格。
* `alpha_num`驗證中的字段必須完全是字母數字字符。
* `between:numeric,numeric`驗證字段檢查字符長度/數組長度、切片、映射/兩個整數或浮點數之間的范圍等。
* `numeric`驗證的字段必須完全是數字字符。
* `numeric_between:numeric,numeric`驗證的字段必須是范圍之間的數值。例如:`numeric_between:18,65`可能包含數值,如`35`,`55`。您還可以傳遞浮點值進行檢查。此外,可以省略兩個邊界以創建無界最小值(例如:`numeric_between:,65`)或無界最大值(例如:`numeric_between:-1,`)。
* `bool`驗證中的字段必須能夠轉換為布爾值。接受的輸入是`true, false, 1, 0, "1" and "0"`.
* `credit_card`驗證字段必須具有有效的信用卡號。接受的卡是`Visa, MasterCard, American Express, Diners Club, Discover and JCB card`
* `coordinate`驗證中的字段必須具有有效坐標值。
* `css_color`驗證字段的值必須為有效的 CSS 顏色。接受的顏色`hex, rgb, rgba, hsl, hsla`就像`#909, #00aaff, rgb(255,122,122)`
* `date`驗證字段必須具有格式為 yyyy-mm-dd 或 yyyy/mm/dd 的有效日期。
* `date:dd-mm-yyyy`驗證中的字段必須具有格式為 dd-mm-yyyy 的有效日期。
* `digits:int`驗證的字段必須是數字,并且必須具有精確的值長度。
* `digits_between:int,int`驗證的字段必須是數字,并且長度必須在范圍之間。例如:`digits_between:3,5`可能包含數字,如`2323`,`12435`
* `in:foo,bar`驗證中的字段必須具有其中一個值。例如:`in:admin,manager,user`必須包含值(管理員或經理或用戶)
* `not_in:foo,bar`驗證中的字段必須有一個值,除了 foo,bar。例如:`not_in:admin,manager,user`不得包含值(管理員或經理或用戶)
* `email`驗證中的字段必須具有有效的電子郵件。
* `float`驗證中的字段必須具有有效的浮點數。
* `mac_address`驗證字段必須是有效的 Mac 地址。
* `min:numeric`驗證字段必須具有字符串的最小字符長度、切片/映射的項目長度、整數或浮點數的值。例如:`min:3`可能包含字符的最小長度為 3 like`"john", "jane", "jane321"`但不是`"mr", "xy"`
* `max:numeric`驗證字段必須具有字符串的最大字符長度、切片/映射的項目長度、整數或浮點數的值。例如:`max:6`可能包含字符的最大長度為 6 個like`"john doe", "jane doe"`但不是`"john", "jane"`
* `len:numeric`驗證字段必須具有精確的字符長度、精確的整數或浮點值、精確的映射/切片大小。例如:`len:4`可能包含精確長度為 4 的字符`Food, Mood, Good`
* `ip`驗證字段必須是有效的 IP 地址。
* `ip_v4`驗證字段必須是有效的 IP V4 地址。
* `ip_v6`驗證字段必須是有效的 IP V6 地址。
* `json`驗證字段必須是有效的 JSON 字符串。
* `lat`驗證的字段必須是有效的緯度。
* `lon`驗證字段必須是有效的經度。
* `regex:regular expression`驗證字段根據正則表達式進行驗證。例如:`regex:^[a-zA-Z]+$`驗證字母。
* `required`驗證中的字段必須存在于輸入數據中,并且不能為空。如果以下條件之一為真,則字段被視為“空”: 1) 值為空。2)該值是一個空字符串。3)零長度的地圖,切片。4) 整數或浮點數的零值
* `size:integer`驗證字段僅在表單數據中驗證文件大小([參見示例](https://github.com/thedevsaddam/govalidator/blob/master/doc/FILE_VALIDATION.md))
* `ext:jpg,png`驗證字段驗證文件擴展名([參見示例](https://github.com/thedevsaddam/govalidator/blob/master/doc/FILE_VALIDATION.md))
* `mime:image/jpg,image/png`驗證字段驗證文件 mime 類型([參見示例](https://github.com/thedevsaddam/govalidator/blob/master/doc/FILE_VALIDATION.md))
* `url`驗證字段必須是有效的 URL。
* `uuid`驗證中的字段必須是有效的 UUID。
* `uuid_v3`驗證中的字段必須是有效的 UUID V3。
* `uuid_v4`驗證字段必須是有效的 UUID V4。
* `uuid_v5`驗證的字段必須是有效的 UUID V5。
## 添加自定義驗證規則
```
func init() {
// simple example
govalidator.AddCustomRule("must_john", func(field string, rule string, message string, value interface{}) error {
val := value.(string)
if val != "john" || val != "John" {
return fmt.Errorf("The %s field must be John or john", field)
}
return nil
})
// custom rules to take fixed length word.
// e.g: word:5 will throw error if the field does not contain exact 5 word
govalidator.AddCustomRule("word", func(field string, rule string, message string, value interface{}) error {
valSlice := strings.Fields(value.(string))
l, _ := strconv.Atoi(strings.TrimPrefix(rule, "word:")) //handle other error
if len(valSlice) != l {
return fmt.Errorf("The %s field must be %d word", field, l)
}
return nil
})
}
```
更多使用技巧,請查看 [https://github.com/thedevsaddam/govalidator](https://github.com/thedevsaddam/govalidator)
- 序言
- 基礎
- 安裝GoHub
- 目錄結構
- 開發規范
- 部署項目
- 架構
- 架構總覽
- 生命周期
- 配置
- 配置介紹
- 配置目錄
- 配置格式
- 配置加載
- 讀取配置
- 動態配置
- 環境變量配置
- 路由
- 路由模式
- 路由定義
- 路由參數
- 路由分組
- 路由限流
- 路由拆分
- 控制器
- 控制定義
- 控制器初始化
- 中間件
- Make創建控制器
- 請求
- 請求信息
- 數據庫
- 連接數據庫
- 基本使用
- Make創建模型
- 日志
- 介紹
- 日志驅動
- 日志寫入
- HTTP日志
- 數據庫請求日志
- 錯誤和調試
- Debuger調試器
- 驗證
- 驗證器
- 驗證規則
- Make創建驗證器
- 雜項
- 緩存
- 分頁
- 驗證碼
- CURL請求
- 命令行
- 基礎知識
- console 包
- Cobra 基礎
- 命令行模式
- 附錄
- 配置參考
- 第三方依賴庫