[
](#validator)验证器
这是一个基于以下内容的修改版本 github.com/go-playground/validator/v10的基础上修改的,对绑定中间件有更好的i18n支持。
包验证器实现了基于标签的结构和单个字段的值验证。
它有以下独特的功能。
- 通过使用验证标签或自定义验证器进行跨字段和跨结构验证。
- 切片、数组和地图潜入,允许对一个多维字段的任何或所有层次进行验证。
- 能够潜入地图的键和值中进行验证。
- 通过在验证前确定它的基本类型来处理类型接口。
- 处理自定义字段类型,如sql驱动Valuer见Valuer
- 别名验证标签,允许将几个验证映射到一个标签上,以方便定义结构上的验证。
- 提取自定义定义的字段名,例如,可以指定在验证时提取JSON名称,并在产生的FieldError中提供该名称。
- 可定制的i18n感知错误信息。
[
](#installation)安装
Go的最低要求是1.16。
go get github.com/flamego/validator
[
](#error-return-value)错误返回值
验证函数返回类型错误,以避免下面讨论的问题,即err总是 != nil。
Validator只对错误的验证输入返回InvalidValidationError,对类型错误返回nil或ValidationErrors;因此,在你的代码中,你需要做的是检查返回的错误是否为nil,如果不是,则检查错误是否为InvalidValidationError(如果需要,大多数情况下不是),像这样将其类型转换为ValidationErrors类型。
err
[
](#usage-and-documentation)使用方法和文档
请参阅pkg.go.dev/github.com/…,了解详细的使用文档。
[
](#examples)实例
[
](#baked-in-validations)嵌入验证器
[
](#fields)领域
| 标签 | 描述 |
|---|---|
| eqcsfield | 字段等同于另一个字段(相对)。 |
| 符号 | 字段等同于另一个字段 |
| 字段包含 | 未记录在doc.go中 |
| 字段不包括 | 未记录在doc.go中 |
| gtcsfield | 大于另一相对字段的字段 |
| gtecsfield | 大于或等于另一个相对字段的字段 |
| gtefield | 大于或等于另一个字段的字段 |
| 场地 | 大于另一个字段的字段 |
| ltcsfield | 小于另一个相对字段 |
| 小于或等于另一个相对字段 | 小于或等于另一个相对字段 |
| ltefield | 小于或等于另一个字段 |
| 梯田 | 小于另一个字段 |
| 小于或等于另一字段 | 字段不等于另一字段(相对 |
| 场地 | 字段不等于另一字段 |
[
](#network)网络
| 标签 | 标签描述 |
|---|---|
| cidr | 无类域间路由CIDR |
| cidrv4 | 无类域间路由CIDRv4 |
| cidrv6 | 无类域间路由CIDRv6 |
| 数据 | 数据URL |
| fqdn | 全限定域名(FQDN)。 |
| 主机名 | 主机名RFC 952 |
| 主机名_端口 | 主机端口 |
| 主机名_rfc1123 | 主机名RFC1123 |
| ip | 互联网协议地址 IP |
| ip4_addr | 互联网协议地址IPv4 |
| ip6_addr | 互联网协议地址IPv6 |
| ip_addr | 互联网协议地址IP |
| ipv4 | 互联网协议地址IPv4 |
| ipv6 | 互联网协议地址IPv6 |
| mac | 媒体访问控制地址MAC |
| tcp4_addr | 传输控制协议地址 TCPv4 |
| tcp6_addr | 传输控制协议地址 TCPv6 |
| tcp_addr | 传输控制协议地址 TCP |
| udp4_addr | 用户数据报协议地址UDPv4 |
| udp6_addr | 用户数据报协议地址 UDPv6 |
| udp_addr | 用户数据报协议地址UDP |
| unix_addr | Unix域套接字端点地址 |
| uri | URI字符串 |
| 网址 | URL字符串 |
| url_encoded | 编码的URL |
| urn_rfc2141 | Urn RFC 2141字符串 |
[
](#strings)字符串
| 标签 | 描述 |
|---|---|
| 阿尔法 | 仅限阿尔法 |
| 阿尔法姆 | 字母数字 |
| 字母数字Unicode | 字母数字Unicode |
| αunicode | 阿尔法统一码 |
| ascii | ASCII |
| boolean | 布尔型 |
| 包含 | 包含 |
| 包含任何 | 包含任何 |
| 包含符文 | 包含符文 |
| 终止不与 | 结束于 |
| 结束 | 结束于 |
| 排除 | 不包括 |
| 不包括所有 | 不包括所有 |
| 不包括鲁恩 | 排除符文 |
| 小写 | 小写字母 |
| multibyte | 多字节字符 |
| 数字 | 未记录在doc.go中 |
| 数字 | 数值 |
| printascii | 可打印的ASCII码 |
| startsnotwith | 不以任何方式开始 |
| 开始与 | 开始于 |
| 大写字母 | 大写字母 |
[
](#format)格式化
| 标签 | 描述 |
|---|---|
| 基准64 | Base64字符串 |
| 编码 | Base64URL字符串 |
| bic | 商业识别码(ISO 9362)。 |
| bcp47_language_tag | 语言标签(BCP47)。 |
| btc_addr | 比特币地址 |
| btc_addr_bech32 | 比特币Bech32地址(segwit) |
| 日期时间 | 日期时间 |
| e164 | e164格式的电话号码 |
| 电子邮件 | E-mail字符串 |
| eth_addr | 以太坊地址 |
| 十六进制 | 十六进制字符串 |
| 十六色 | 十六进制颜色字符串 |
| hsl | HSL字符串 |
| 橙色 | HSLA字符串 |
| 语气词 | HTML标签 |
| html_encoded | 编码的HTML |
| 国际标准书号(isbn | 国际标准书号 |
| isbn10 | 国际标准书号10 |
| isbn13 | 国际标准书号13 |
| iso3166_1_alpha2 | 双字母国家代码(ISO 3166-1 alpha-2) |
| ISO3166_1_alpha3 | 三个字母的国家代码(ISO 3166-1 alpha-3) |
| iso3166_1_alpha_numeric | 数字型国家代码(ISO 3166-1数字型)。 |
| iso3166_2 | 国家细分代码(ISO 3166-2) |
| iso4217 | 货币代码(ISO 4217) |
| json | JSON |
| jwt | JSON网络令牌(JWT)。 |
| 纬度 | 纬度 |
| 经度 | 经度 |
| postcode_iso3166_alpha2 | 邮政编码 |
| 邮政编码_iso3166_alpha2_field | 邮政编码 |
| rgb | RGB字符串 |
| rgba | RGBA字符串 |
| ssn | 社会安全号码SSN |
| 时区 | 时区 |
| uuid | 通用唯一标识符UUID |
| uuid3 | 通用唯一标识符UUID v3 |
| uuid3_rfc4122 | 通用唯一标识符UUID v3 RFC4122 |
| uuid4 | 通用唯一识别码UUID v4 |
| uuid4_rfc4122 | 通用唯一标识符UUID v4 RFC4122 |
| uuid5 | 通用唯一标识符UUID v5 |
| uuid5_rfc4122 | 通用唯一标识符UUID v5 RFC4122 |
| uuid_rfc4122 | 通用唯一标识符UUID RFC4122 |
[
](#comparisons)比较
| 标签 | 描述 |
|---|---|
| eq | 等于 |
| gt | 大于 |
| gte | 大于或等于 |
| lt | 小于 |
| lte | 小于或等于 |
| ne | 不等于 |
[
](#other)其他
| 标签 | 描写 |
|---|---|
| dir | 目录 |
| 文件 | 文件路径 |
| isdefault | 是默认的 |
| len | 长度 |
| 最大 | 最大 |
| min | 最小值 |
| 其中 | 其中一个 |
| 所需 | 需要 |
| 必要的_如果 | 必需的,如果 |
| 必需的_无 | 必需的,除非 |
| 需要 | 必须有 |
| 必需包含所有 | 全部为必填 |
| 需要_不需要 | 必需的,没有 |
| 不含所有 | 必需的,没有全部 |
| 不包括_有 | 不包括在内 |
| 除外_所有 | 全部排除 |
| 除外_不包括 | 不包括在内 |
| 排除_不包括所有 | 不包括所有 |
| 唯一的 | 独特的 |
[
](#aliases)别名
| 标签 | 描述 | ||||
|---|---|---|---|---|---|
| 颜料 | 肤色 | rgb | rgba | hsl | hsla |
| 国家代码 | iso3166_1_alpha2 | iso3166_1_alpha3 | iso3166_1_alpha_numeric |
[
](#license)许可证
本项目采用MIT许可协议。参见LICENSE文件中的完整许可文本。