­

validator參數校驗

  • 2022 年 2 月 26 日
  • 筆記

validator參數校驗

type Req struct {
			Sn string `json:"sn" binding:"required"`
		}

email:郵箱驗證 // 這將驗證字符串值是否包含有效的電子郵件。
	eg:binding:"email"

required:必填 // 對於數字,確保值不為零。對於字符串,確保值不是「」。對於切片、映射、指針、接口、通道和函數,確保值不為零。
		eg:binding:"required"

required_with:必填 // 對於數字,不為空就行。對於字符串,確保值不是「」,對於切片、映射、指針、接口、通道和函數,確保值不為零。
		eg:binding:"required_with"

len:長度 //對於字符串,它會檢查字符串長度是否恰好是該字符數。對於切片、數組和映射,驗證項目數。
    eg:binding:"len=10"

max:最大值 // 確保該值小於或等於給定的參數。對於字符串,它會檢查字符串長度是否最多為該字符數。對於切片、數組和映射,驗證項目數。
    eg:binding:"max=10"

min:最小值 //確保該值大於或等於給定的參數。對於字符串,它會檢查字符串長度是否至少為該字符數。對於切片、數組和映射,驗證項目數。
    eg:binding:"min=10"

eq:等於(=) //對於字符串和數字,eq 將確保值等於給定的參數。對於切片、數組和映射,驗證項目數。
gt:大於(>)
lt:小於(<)
gte:大於等於(>=)
lte:小於等於(=<)
ne:不等與(!=)
		eg:binding:"eq=10"
		eg:binding:"gt=10"

oneof:之一 //對於字符串、整數和 uint,oneof 將確保該值是參數中的值之一。該參數應該是由空格分隔的值列表。值可以是字符串或數字
		eg:binding:"oneof=1 3 5 7"

eqfield:等於另一個字段 //通常重複密碼校驗
    eg:type user struct {
        Password   string `json:"password" binding:"required"`
        RePassword string `json:"re_password" binding:"required,eqfield=Password"`
      }

nefield:不等於另一個字段 //這將根據結構內或傳入的字段中的另一個字段值驗證字段值。
gtfield:大於另一個字段
gtefield:大於等於另一個字段
ltfield:小於另一個字段
ltefield:小於等於另一個字段

unique:唯一 //對於數組和切片,唯一的將確保沒有重複。對於地圖,唯一性將確保沒有重複值。對於結構切片,unique 將確保通過參數指定的結構字段中沒有重複值。
	  eg:binding:"unique"

alphanum:字母數字 //這驗證字符串值僅包含 ASCII 字母數字字符
		eg:binding:"alphanum"

alphaunicode: unicode字母字符//這驗證字符串值僅包含unicode字母字符
		eg:binding:"alphaunicode"

alphanumunicode:unicode 字母數字字符 //這驗證字符串值僅包含 unicode 字母數字字符
	  eg:binding:"alphanumunicode"

numeric:數字 //是否包含基本數值。基本排除指數等...對於整數或浮點它返回真。

hexadecimal:是否包含有效的十六進制

hexcolor:是否包含有效的十六進制顏色,包括標籤 (#)

rgb:這將驗證字符串值是否包含有效的 rgb 顏色

rgba:這將驗證字符串值是否包含有效的 rgba 顏色

hsl:這將驗證字符串值是否包含有效的 hsl 顏色

url: 網址//這驗證了一個字符串值是否包含一個有效的 url 這將接受 golang 請求 uri 接受的任何 url,但必須包含一個模式,例如 // 或 rtmp://

base64:是否包含有效的 base64值

btc_addr:是否包含一個有效的比特幣地址

eth_addr: 是否包含有效的以太坊地址

startswith:是否以什麼開頭的字符串 // 這驗證字符串值是否以提供的字符串值開頭
		eg:binding:"startswith=Jeff"  // 驗證字符串是否以"Jeff"開頭

endswith:是否以什麼結尾的字符串 // 這驗證字符串值是否以提供的字符串值結尾
		eg:binding:"endswith=eileen"  // 驗證字符串是否以"eileen"結尾

uuid: 是否包含有效的 UUID // 這將驗證字符串值是否包含有效的 UUID。大寫 UUID 值不會通過 - 請改用 `uuid_rfc4122`

ASCII:這將驗證字符串值僅包含 ASCII 字符

multibyte:是否包含一個或多個多位元組字符

latitude:緯度
longitude:經度

ip:這將驗證字符串值是否包含有效的 IP 地址。
ipv4:這將驗證字符串值是否包含有效的 IPv4 地址。
ipv6:這將驗證字符串值是否包含有效的 IPv6 地址。

tcp_addr: 這將驗證字符串值是否包含有效的可解析 TCP 地址。
tcp4_addr:這將驗證字符串值是否包含有效的可解析 TCPv4 地址。
tcp6_addr:這將驗證字符串值是否包含有效的可解析 TCPv6 地址。

udp_addr: 這將驗證字符串值是否包含有效的可解析 UDP 地址。
udp4_addr: 這將驗證字符串值是否包含有效的可解析 UDPv4 地址。
udp6_addr: 這將驗證字符串值是否包含有效的可解析 UDPv6 地址。

html: 字符串是否為一個 HTML 元素標籤