ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 验证规则 * `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)