// Package consts ... // // Description : consts ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2025-01-22 16:08 // @see: https://github.com/go-playground/validator/blob/master/README.md#strings // @demo: https://www.cnblogs.com/zj420255586/p/13542395.html package consts type ValidatorRule string // 验证规则 func (vr ValidatorRule) String() string { return string(vr) } func (vr ValidatorRule) MarshalJSON() ([]byte, error) { return []byte(`"` + vr.String() + `"`), nil } // IsValid 验证规则是否有效 func (vr ValidatorRule) IsValid() bool { _, exist := ValidatorRuleSupportDataTypeTable[vr] if !exist { return false } rule := ValidatorRuleSupportDataTypeTable[vr].ValidatorRule if vr.String() != rule.String() { return false } return exist } // Config 验证规则的配置 // // Author : go_developer@163.com<白茶清欢> // // Date : 16:10 2025/1/22 func (vr ValidatorRule) Config() ValidatorRuleConfig { return ValidatorRuleSupportDataTypeTable[vr] } // IsSupportDataType 是否支持指定的数据类型 // // Author : go_developer@163.com<白茶清欢> // // Date : 16:11 2025/1/22 func (vr ValidatorRule) IsSupportDataType(dataType DataType) bool { dataTypeList := vr.Config().SupportDataTypeList if len(dataTypeList) == 0 { // 未配置则认为支持 return true } for _, dataTypeItem := range dataTypeList { if dataType.String() == dataTypeItem.String() { return true } } return false } type ValidatorRuleConfig struct { ValidatorRule ValidatorRule `json:"validator_rule"` // 验证规则 Description string `json:"description"` // 规则描述 SupportDataTypeList []DataType `json:"support_data_type_list"` // 支持的数据类型列表 MinParamCnt int `json:"min_param_cnt"` // 最小参数数量(闭区间) MaxParamCnt int `json:"max_param_cnt"` // 最大参数数量(闭区间) ParamCntMustEven bool `json:"param_cnt_must_even"` // 参数数量必须是偶数 WithoutParam bool `json:"without_param"` // 没有参数, 此值为 true, 忽略 MinParamCnt / MaxParamCnt / ParamCntMustEven } // ValidatorRuleSupportDataTypeTable 验证规则支持的数据类型表 var ValidatorRuleSupportDataTypeTable = map[ValidatorRule]ValidatorRuleConfig{} var ValidatorRuleSupportDataTypeList = []ValidatorRuleConfig{ { ValidatorRule: ValidatorRuleEqcsfield, Description: "跨结构体字段相等", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleEqfield, Description: "同结构体字段相等", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleFieldcontains, Description: "检查指定的字段值是否存在于字段中", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 0, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleFieldexcludes, Description: "检查指定的字段值是否不存在于字段中", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 0, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleGtcsfield, Description: "大于(跨结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleGtecsfield, Description: "大于(同结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleGtfield, Description: "大于(同结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleGtefield, Description: "大于(同结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleLtcsfield, Description: "小于(跨结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleLtecsfield, Description: "小于等于(跨结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleLtfield, Description: "小于(同结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleLtefield, Description: "小于等于(同结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleNecsfield, Description: "不等于(跨结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleNefield, Description: "不等于(同结构体)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleEq, Description: "等于(严格校验)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleEqIgnoreCase, Description: "等于(忽略大小写)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleGt, Description: "大于", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 0, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleGte, Description: "大于等于", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 0, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleLt, Description: "小于", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 0, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleLte, Description: "小于等于", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 0, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleNe, Description: "不等于(严格判断)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 0, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleNeIgnoreCase, Description: "不等于(忽略大小写)", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), MinParamCnt: 1, MaxParamCnt: 0, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleRegexp, Description: "正则表达式", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), MinParamCnt: 1, MaxParamCnt: 1, ParamCntMustEven: false, }, { ValidatorRule: ValidatorRuleCommonDir, Description: "文件夹存在", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), WithoutParam: true, }, { ValidatorRule: ValidatorRuleCommonDirPath, Description: "文件夹路径存在", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), WithoutParam: true, }, { ValidatorRule: ValidatorRuleCommonFile, Description: "文件存在", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), WithoutParam: true, }, { ValidatorRule: ValidatorRuleCommonFilepath, Description: "文件路径存在", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), WithoutParam: true, }, { ValidatorRule: ValidatorRuleCommonImage, Description: "是否图像资源", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal), WithoutParam: true, }, { ValidatorRule: ValidatorRuleCommonIsDefault, Description: "是否对应类型默认值", SupportDataTypeList: nil, // 所有类型均支持 WithoutParam: true, }, { ValidatorRule: ValidatorRuleCommonOmitempty, Description: "为空时不进行其他校验", SupportDataTypeList: nil, // 所有类型均支持 WithoutParam: true, }, { ValidatorRule: ValidatorRuleCommonLen, Description: "数据长度", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString, DataTypeSliceMarshal, DataTypeSliceSplit, DataTypeMapMarshal, DataTypeSlice, DataTypeMap), // 所有类型均支持 MinParamCnt: 1, MaxParamCnt: 1, }, { ValidatorRule: ValidatorRuleCommonMax, Description: "最大值", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, }, { ValidatorRule: ValidatorRuleCommonMin, Description: "最小值", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), MinParamCnt: 1, MaxParamCnt: 1, }, { ValidatorRule: ValidatorRuleCommonOneOf, Description: "枚举值", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool), MinParamCnt: 1, MaxParamCnt: 0, }, { ValidatorRule: ValidatorRuleCommonRequired, Description: "必传校验", SupportDataTypeList: nil, // 所有类型均支持 WithoutParam: true, }, { ValidatorRule: ValidatorRuleCommonRequiredIf, Description: "当指定字段等于给定值时, 必传校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 2, MaxParamCnt: 0, ParamCntMustEven: true, }, { ValidatorRule: ValidatorRuleCommonRequiredUnless, Description: "当指定字段不等于给定值时, 必传校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 2, MaxParamCnt: 0, ParamCntMustEven: true, }, { ValidatorRule: ValidatorRuleCommonRequiredWith, Description: "当任意一个指定字段不为零值时, 必传校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 1, MaxParamCnt: 0, }, { ValidatorRule: ValidatorRuleCommonRequiredWithAll, Description: "当全部指定字段不为零值时, 必传校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 1, MaxParamCnt: 0, }, { ValidatorRule: ValidatorRuleCommonRequiredWithout, Description: "当任意一个字段不存在时, 必传校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 1, MaxParamCnt: 0, }, { ValidatorRule: ValidatorRuleCommonRequiredWithoutAll, Description: "当全部字段不存在时, 必传校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 1, MaxParamCnt: 0, }, { ValidatorRule: ValidatorRuleCommonExcludedIf, Description: "当指定字段等于给定值时,排除校验", SupportDataTypeList: nil, // 所有类型均支持 }, { ValidatorRule: ValidatorRuleCommonExcludedUnless, Description: "当指定字段等于给定值时,排除校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 2, MaxParamCnt: 0, ParamCntMustEven: true, }, { ValidatorRule: ValidatorRuleCommonExcludedWith, Description: "当全部指定字段不为零值时,排除校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 2, MaxParamCnt: 0, ParamCntMustEven: true, }, { ValidatorRule: ValidatorRuleCommonExcludedWithAll, Description: "当全部指定字段不为零值时,排除校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 1, MaxParamCnt: 0, }, { ValidatorRule: ValidatorRuleCommonExcludedWithout, Description: "当任意一个指定字段不存在时,排除校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 1, MaxParamCnt: 0, }, { ValidatorRule: ValidatorRuleCommonExcludedWithoutAll, Description: "当全部指定字段不存在时,排除校验", SupportDataTypeList: nil, // 所有类型均支持 MinParamCnt: 1, MaxParamCnt: 0, }, { ValidatorRule: ValidatorRuleCommonUnique, Description: "是否唯一, 用于切片验证", SupportDataTypeList: getMergeDataTypeList(DataTypeSlice), // 所有类型均支持 WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterCron, Description: "cron表达式验证", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterEmail, Description: "邮箱地址验证", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterJson, Description: "json格式验证", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterJson, Description: "JWT(JSON Web Token)验证", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterLatitude, Description: "纬度验证", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterLongitude, Description: "经度验证", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterLongitude, Description: "时区验证", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterUrl, Description: "url验证", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterUrl, Description: "uri验证", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterLowercase, Description: "仅包含小写字符", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), WithoutParam: true, }, { ValidatorRule: ValidatorRuleFormatterUppercase, Description: "仅包含大写字符", SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString), WithoutParam: true, }, } func init() { for _, item := range ValidatorRuleSupportDataTypeList { ValidatorRuleSupportDataTypeTable[item.ValidatorRule] = item } } var ( // ValidatorRuleEqcsfield .....Fields .............. ValidatorRuleEqcsfield ValidatorRule = "eqcsfield" // 跨结构体字段相等 eqcsfield={{struct.field}} ValidatorRuleEqfield ValidatorRule = "eqfield" // 同结构体字段相等 eqfield={{struct.field}} ValidatorRuleFieldcontains ValidatorRule = "fieldcontains" // 检查指定的字段值是否存在于字段中 fieldcontains={{struct.field}} ValidatorRuleFieldexcludes ValidatorRule = "fieldexcludes" // 检查指定的字段值是否存在于字段中 fieldexcludes={{struct.field}} ValidatorRuleGtcsfield ValidatorRule = "gtcsfield" // 大于(跨结构体) gtcsfield={{struct.field}} ValidatorRuleGtecsfield ValidatorRule = "gtecsfield" // 大于等于(跨结构体) gtecsfield={{struct.field}} ValidatorRuleGtfield ValidatorRule = "gtfield" // 大于(同结构体) gtfield={{struct.field}} ValidatorRuleGtefield ValidatorRule = "gtefield" // 大于等于(同结构体) gtefield={{struct.field}} ValidatorRuleLtcsfield ValidatorRule = "ltcsfield" // 小于(跨结构体) ltcsfield={{struct.field}} ValidatorRuleLtecsfield ValidatorRule = "ltecsfield" // 小于等于(跨结构体) ltecsfield={{struct.field}} ValidatorRuleLtfield ValidatorRule = "ltfield" // 小于(同结构体) ltfield={{struct.field}} ValidatorRuleLtefield ValidatorRule = "ltefield" // 小于等于(同结构体) ltefield={{struct.field}} ValidatorRuleNecsfield ValidatorRule = "necsfield" // 不等于(跨结构体) necsfield={{struct.field}} ValidatorRuleNefield ValidatorRule = "nefield" // 不等于(同结构体) nefield={{struct.field}} // ValidatorRuleEq Comparisons .................... ValidatorRuleEq ValidatorRule = "eq" // 相等(严格判断) eq={{any_value}} ValidatorRuleEqIgnoreCase ValidatorRule = "eq_ignore_case" // 相等(忽略大小写) eq_ignore_case={{any_value}} ValidatorRuleGt ValidatorRule = "gt" // 大于 gt={{number_value}} ValidatorRuleGte ValidatorRule = "gte" // 大于等于 gte={{number_value}} ValidatorRuleLt ValidatorRule = "lt" // 小于 lt={{number_value}} ValidatorRuleLte ValidatorRule = "lte" // 小于等于 lte={{number_value}} ValidatorRuleNe ValidatorRule = "ne" // 不相等(严格判断) ne={{any_value}} ValidatorRuleNeIgnoreCase ValidatorRule = "ne_ignore_case" // 不相等(忽略大小写) ne_ignore_case={{any_value}} ValidatorRuleRegexp ValidatorRule = "regexp" // 正则表达式 // ValidatorRuleCommonDir ............others ValidatorRuleCommonDir ValidatorRule = "dir" // 文件夹存在 ValidatorRuleCommonDirPath ValidatorRule = "dirpath" // 文件夹路径 ValidatorRuleCommonFile ValidatorRule = "file" // 文件存在 ValidatorRuleCommonFilepath ValidatorRule = "filepath" // 文件路径 ValidatorRuleCommonImage ValidatorRule = "image" // 图像 ValidatorRuleCommonIsDefault ValidatorRule = "isdefault" // 是否默认值 ValidatorRuleCommonOmitempty ValidatorRule = "omitempty" // 为空忽略,比如,某些字段可以不传或者传空, 但是一旦传了则必须是制定枚举值, omitempty,oneof=a b ValidatorRuleCommonLen ValidatorRule = "len" // 长度 len={{uint_value}} ValidatorRuleCommonMax ValidatorRule = "max" // 最大值 max={{int_value}} ValidatorRuleCommonMin ValidatorRule = "min" // 最小值 min={{int_value}} ValidatorRuleCommonOneOf ValidatorRule = "oneof" // 枚举值, 多个空格分隔 oneof={{enum1}} {{enum2}} {{enum....}} ValidatorRuleCommonRequired ValidatorRule = "required" // 必传 ValidatorRuleCommonRequiredIf ValidatorRule = "required_if" // 当指定字段等于给定值时,校验必传 required_if={{check_field}} {{check_field_value}} {{check_field...}} {{check_field_value...}} ValidatorRuleCommonRequiredUnless ValidatorRule = "required_unless" // 当指定字段不等于给定值时,校验必传 required_if={{check_field}} {{check_field_value}} {{check_field...}} {{check_field_value...}} ValidatorRuleCommonRequiredWith ValidatorRule = "required_with" // 当任意一个指定字段不为零值时, 校验必传 required_with={{Field1}} {{Field2}} {{Field...}} ValidatorRuleCommonRequiredWithAll ValidatorRule = "required_with_all" // 当全部指定字段不为零值时, 校验必传 required_with={{Field1}} {{Field2}} {{Field...}} ValidatorRuleCommonRequiredWithout ValidatorRule = "required_without" // 任意一个字段为空时,必传校验 required_without={{Field1}} {{Field2}} {{Field...}} ValidatorRuleCommonRequiredWithoutAll ValidatorRule = "required_without_all" // 全部字段为空时,必传校验 required_without_all={{Field1}} {{Field2}} {{Field...}} ValidatorRuleCommonExcludedIf ValidatorRule = "excluded_if" // 当指定字段等于给定值时,排除校验 excluded_if={{check_field}} {{check_field_value}} {{check_field...}} {{check_field_value...}} ValidatorRuleCommonExcludedUnless ValidatorRule = "excluded_unless" // 当指定字段不等于给定值时,排除校验 excluded_if={{check_field}} {{check_field_value}} {{check_field...}} {{check_field_value...}} ValidatorRuleCommonExcludedWith ValidatorRule = "excluded_with" // 当任意一个指定字段不为零值时,排除校验 excluded_with={{Field1}} {{Field2}} {{Field...}} ValidatorRuleCommonExcludedWithAll ValidatorRule = "excluded_with_all" // 当全部指定字段不为零值时,排除校验 excluded_with_all={{Field1}} {{Field2}} {{Field...}} ValidatorRuleCommonExcludedWithout ValidatorRule = "excluded_without" // 当任意一个指定字段不存在时,排除校验 excluded_without={{Field1}} {{Field2}} {{Field...}} ValidatorRuleCommonExcludedWithoutAll ValidatorRule = "excluded_without_all" // 当q廍指定字段不存在时,排除校验 excluded_without-all={{Field1}} {{Field2}} {{Field...}} ValidatorRuleCommonUnique ValidatorRule = "unique" // 数据唯一校验 // ValidatorRuleFormatterCron ............. formatter ValidatorRuleFormatterCron ValidatorRule = "cron" // cron表达式 ValidatorRuleFormatterEmail ValidatorRule = "email" // 邮件地址 ValidatorRuleFormatterJson ValidatorRule = "json" // json格式 ValidatorRuleFormatterJwt ValidatorRule = "jwt" // JSON Web Token (JWT) ValidatorRuleFormatterLatitude ValidatorRule = "latitude" // 纬度 ValidatorRuleFormatterLongitude ValidatorRule = "longitude" // 经度 ValidatorRuleFormatterTimezone ValidatorRule = "timezone" // 时区 ValidatorRuleFormatterUrl ValidatorRule = "url" // url ValidatorRuleFormatterUri ValidatorRule = "uri" // uri ValidatorRuleFormatterLowercase ValidatorRule = "lowercase" // 仅包含小写字符 ValidatorRuleFormatterUppercase ValidatorRule = "uppercase" // 仅包含大写字符 ) // RegisterCustomValidatorRule 注册自定义的验证方法, 允许通过此函数, 覆盖内部默认的配置 // // Author : go_developer@163.com<白茶清欢> // // Date : 18:35 2025/1/24 func RegisterCustomValidatorRule(rule ValidatorRule, validatorRuleConfig ValidatorRuleConfig) { ValidatorRuleSupportDataTypeTable[rule] = validatorRuleConfig }