package main
import "github.com/gogf/gf/util/gvalid"
import "fmt"
func main() {
//vRequired()
//vRequiredIf()
//vRequiredUnless()
//vRequiredWith()
//vRequiredWithAll()
//vRequiredWithout()
//vRequiredWithoutAll()
//vDate()
//vDateFormat()
//vEmail()
//vPhone()
//vTelephone()
//vPassport()
//vPassword()
//vPassword2()
//vPassword3()
//vPostcode()
//vIdNumber()
//vLuhn()
//vQQ()
//vIp()
//vIpv4()
//vIpv6()
//vMac()
//vUrl()
//vDomain()
//vLength()
//vMinLength()
//vMaxLength()
//vBetween()
//vMin()
//vMax()
//vJSON()
//vInteger()
//vFloat()
//vBoolean()
//vSame()
//vDifferent()
//vIn()
//vNotIn()
//vRegex()
//vMap()
vMsg()
}
// 必需參數(shù)
// required
// 格式:required
func vRequired() {
if err := gvalid.Check("", "required", nil); err != nil{
fmt.Println(err.Strings())
fmt.Println(err.Maps())
}
}
// 給定字段值與所給值相等時
// required-if
// 格式: required-if:field,value,...
// 說明:必需參數(shù)(當任意所給定字段值與所給值相等時,即:當field字段的值為value時,當前驗證字段為必須參數(shù))
func vRequiredIf(){
type User struct {
A string
B string `valid:"b@required-if:A,1"`
}
var user = User{"1", ""}
if err := gvalid.CheckStruct(&user, nil); err != nil{
fmt.Println(err.Strings())
fmt.Println(err.Maps())
}
}
// 給定字段值與所給值都不相等時
// required-unless
// 格式: required-unless:field,value,...
// 說明:必需參數(shù)(當所給定字段值與所給值都不相等時壳嚎,即:當field字段的值不為value時框舔,當前驗證字段為必須參數(shù))
func vRequiredUnless() {
type User struct {
A string
B string `valid:"b@required-unless:A,1"`
}
var user = User{"2", ""}
if err := gvalid.CheckStruct(&user, nil); err != nil{
fmt.Println(err.Strings())
fmt.Println(err.Maps())
}
}
// 給定任意字段值不為空時
// required-with
// 格式: required-with:field1,field2,...
// 說明:必需參數(shù)(當所給定任意字段值不為空時)
func vRequiredWith() {
type User struct {
A string
B string `valid:"b@required-with:A,C"`
C string
}
var user = User{"a", "", "c"}
if err := gvalid.CheckStruct(&user, nil); err != nil{
fmt.Println(err.Strings())
fmt.Println(err.Maps())
}
}
// 給定所有字段值都不為空時
// required-with-all
// 格式: required-with-all:field1,field2,...
// 說明:必須參數(shù)(當所給定所有字段值都不為空時)
func vRequiredWithAll() {
type User struct {
A string
B string `valid:"b@required-with-all:A,C"`
C string
}
var user = User{"a", "", "c"}
if err := gvalid.CheckStruct(&user, nil); err != nil{
fmt.Println(err.Strings())
fmt.Println(err.Maps())
}
}
// 給定任意字段值為空時
// required-without
// 格式: required-without:field1,field2,...
// 說明:必需參數(shù)(當所給定任意字段值為空時)
func vRequiredWithout() {
type User struct {
A string
B string `valid:"b@required-without:A,C"`
C string
}
var user = User{"", "", "c"}
if err := gvalid.CheckStruct(&user, nil); err != nil{
fmt.Println(err.Strings())
fmt.Println(err.Maps())
}
}
// 給定所有字段值都為空時
// required-without-all
// 格式: required-without-all:field1,field2,...
// 說明:必須參數(shù)(當所給定所有字段值都為空時)
func vRequiredWithoutAll() {
type User struct {
A string
B string `valid:"b@required-without-all:A,C"`
C string
}
var user = User{"", "", ""}
if err := gvalid.CheckStruct(&user, nil); err != nil{
fmt.Println(err.Strings())
fmt.Println(err.Maps())
}
}
// 日期類型
// date
// 格式: date
// 說明:參數(shù)為常用日期類型,日期之間支持的連接符號-或/或.啊片,也支持不帶連接符號的8位長度日期只锻,
// 格式如: 2006-01-02, 2006/01/02, 2006.01.02, 20060102, 01-Nov-2018, 01.Nov.018, 01/Nov/2018
func vDate() {
rule := `date`
if err := gvalid.Check("2020-01-07", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 自定義時間日期驗證
// 格式:date-format:format
func vDateFormat() {
rule := `date-format:2006-01-02 15:04:05`
if err := gvalid.Check("2020-01-07:14:02:00", rule, nil); err != nil{
fmt.Println(err.Strings())
fmt.Println(err.Maps())
}
}
// EMAIL郵箱地址
// email
// 格式: email
// 說明:EMAIL郵箱地址
func vEmail() {
rule := `email`
if err := gvalid.Check("xx@xx.xx", rule, nil); err != nil{
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 手機號
// phone
// 格式: phone
// 說明:手機號
func vPhone() {
rule := `phone`
if err := gvalid.Check("13888888888", rule, nil); err != nil{
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 國內(nèi)座機電話號碼
// telephone
// 格式: telephone
// 說明:國內(nèi)座機電話號碼,"XXXX-XXXXXXX"紫谷、"XXXX-XXXXXXXX"齐饮、"XXX-XXXXXXX"、"XXX-XXXXXXXX"笤昨、"XXXXXXX"祖驱、"XXXXXXXX"
func vTelephone() {
rule := `telephone`
if err := gvalid.Check("0111-12345678", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 通用帳號規(guī)則
// passport
// 格式: passport
// 說明:通用帳號規(guī)則(字母開頭,只能包含字母瞒窒、數(shù)字和下劃線捺僻,長度在6~18之間)
func vPassport() {
rule := `passport`
if err := gvalid.Check("admin", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 通用密碼
// password
// 格式: password
// 說明:通用密碼(任意可見字符,長度在6~18之間)
func vPassword() {
rule := `password`
if err := gvalid.Check("123", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 中等強度密碼
// password2
// 格式: password2
// 說明:中等強度密碼(在弱密碼的基礎(chǔ)上,必須包含大小寫字母和數(shù)字)
func vPassword2() {
rule := `password2`
if err := gvalid.Check("123Abc", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 強等強度密碼
// password3
// 格式: password3
// 說明:強等強度密碼(在弱密碼的基礎(chǔ)上匕坯,必須包含大小寫字母束昵、數(shù)字和特殊字符)
func vPassword3() {
rule := `password3`
if err := gvalid.Check("123Abc@", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 中國郵政編碼
// postcode
// 格式: postcode
// 說明:中國郵政編碼
func vPostcode() {
rule := `postcode`
if err := gvalid.Check("1234124", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 公民身份證號碼
// id-number
// 格式: id-number
// 說明:公民身份證號碼
func vIdNumber() {
rule := `id-number`
if err := gvalid.Check("340622199601016631", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 銀行卡號校驗
// luhn
// 格式: luhn
// 說明:銀行卡號校驗
func vLuhn() {
rule := `luhn`
if err := gvalid.Check("621226202001015588", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 騰訊QQ號碼
// qq
// 格式: qq
// 說明:騰訊QQ號碼
func vQQ() {
rule := `qq`
if err := gvalid.Check("1227716207", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// IPv4/IPv6地址
// ip
// 格式: ip
// 說明:IPv4/IPv6地址
func vIp() {
rule := `ip`
if err := gvalid.Check("192.168.1.1", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// IPv4地址
// ipv4
// 格式: ipv4
// 說明:IPv4地址
func vIpv4() {
rule := `ipv4`
if err := gvalid.Check("192.168.1.1", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// IPv6地址
// ipv6
// 格式: ipv6
// 說明:IPv6地址
func vIpv6() {
rule := `ipv6`
if err := gvalid.Check("ae80::ebc8:9f54:20ac:b32b", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// MAC地址
// mac
// 格式: mac
// 說明:MAC地址
func vMac() {
rule := `mac`
if err := gvalid.Check("a1:00:ec:21:32:22", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// url
// 格式: url
// 說明:URL
func vUrl() {
rule := `url`
if err := gvalid.Check("http://127.0.0.1:8080/get_user", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 域名
// domain
// 格式: domain
// 說明:域名
func vDomain() {
rule := `domain`
if err := gvalid.Check("a.net", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 參數(shù)長度為min到max
// length
// 格式: length:min,max
// 說明:參數(shù)長度為min到max(長度參數(shù)為整形),注意中文一個漢字占3字節(jié)
func vLength() {
rule := `length:6,10`
if err := gvalid.Check("hello", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 參數(shù)長度最小為min
// min-length
// 格式: min-length:min
// 說明:參數(shù)長度最小為min(長度參數(shù)為整形)醒颖,注意中文一個漢字占3字節(jié)
func vMinLength() {
rule := `min-length:6`
if err := gvalid.Check("hello2", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 參數(shù)長度最大為max
// max-length
// 格式: max-length:max
// 說明:參數(shù)長度最大為max(長度參數(shù)為整形)妻怎,注意中文一個漢字占3字節(jié)
func vMaxLength() {
rule := `max-length:6`
if err := gvalid.Check("hello22", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 參數(shù)大小為min到max
// between
// 格式: between:min,max
// 說明:參數(shù)大小為min到max(支持整形和浮點類型參數(shù))
func vBetween() {
rule := `between:1,5`
if err := gvalid.Check("4", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 參數(shù)大小最小為min
// min
// 格式: min:min
// 說明:參數(shù)大小最小為min(支持整形和浮點類型參數(shù))
func vMin() {
rule := `min:3`
if err := gvalid.Check("4", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 參數(shù)大小最大為max
// max
// 格式: max:max
// 說明:參數(shù)大小最大為max(支持整形和浮點類型參數(shù))
func vMax() {
rule := `max:3`
if err := gvalid.Check("2", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// JSON格式校驗
// json
// 格式: json
// 說明:判斷數(shù)據(jù)格式為JSON
func vJSON() {
rule := `json`
if err := gvalid.Check(`{"name": "admin"}`, rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// integer
// 格式: integer
// 說明:整數(shù)
func vInteger() {
rule := `integer`
if err := gvalid.Check("a12341234123412", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// float
// 格式: float
// 說明:浮點數(shù)
func vFloat() {
rule := `float`
if err := gvalid.Check("2323.11", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// boolean
// 格式: boolean
// 說明:布爾值(1,true,on,yes為true | 0,false,off,no,""為false)
func vBoolean() {
rule := `boolean`
if err := gvalid.Check("false", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 參數(shù)值必需與field參數(shù)的值相同
// same
// 格式: same:field
// 說明:參數(shù)值必需與field參數(shù)的值相同
func vSame() {
type User struct{
Name string
Password1 string
Password2 string `valid:"password@same:Password1"`
}
var user = User{"admin", "111111", "222222"}
if err := gvalid.CheckStruct(user, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 參數(shù)值不能與field參數(shù)的值相同
// different
// 格式: different:field
// 說明:參數(shù)值不能與field參數(shù)的值相同
func vDifferent() {
type User struct{
Name string
Password1 string
Password2 string `valid:"password@different:Password1"`
}
var user = User{"admin", "111111", "111111"}
if err := gvalid.CheckStruct(user, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// in
// 格式: in:value1,value2,...
// 說明:參數(shù)值應該在value1,value2,...中(字符串匹配)
func vIn() {
rule := `in:admin,superadmin`
if err := gvalid.Check("superadmin", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// not-in
// 格式: not-in:value1,value2,...
// 說明:參數(shù)值不應該在value1,value2,...中(字符串匹配)
func vNotIn() {
rule := `not-in:admin,superadmin`
if err := gvalid.Check("admin", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 自定義正則匹配規(guī)則
// regex
// 格式: regex:pattern
// 說明:參數(shù)值應當滿足正則匹配規(guī)則pattern
func vRegex() {
rule := `regex:^\d{3}`
if err := gvalid.Check("133", rule, nil); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// map驗證 自定義錯誤提示
func vMap() {
data := map[string]string{
"username": "root",
"password": "123Abc@",
}
rules := map[string]string{
"username": "required",
"password": "password3",
}
if err := gvalid.CheckMap(data, rules); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
// 自定義錯誤提示
func vMsg() {
rule := `required|length:6,10`
msgs := map[string]string{
"required": "老鐵,這個不能空芭⑶浮逼侦!",
"length": "兄得,范圍在6-10哥字符",
}
if err := gvalid.Check("abc", rule, msgs); err != nil {
fmt.Println(err.Maps())
fmt.Println(err.Strings())
}
}
gf框架gvalid使用
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門援制,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戏挡,“玉大人,你說我怎么就攤上這事晨仑『质” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵洪己,是天一觀的道長妥凳。 經(jīng)常有香客問我,道長答捕,這世上最難降的妖魔是什么逝钥? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮拱镐,結(jié)果婚禮上晌缘,老公的妹妹穿的比我還像新娘。我一直安慰自己痢站,他們只是感情好磷箕,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阵难,像睡著了一般岳枷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼凯砍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拴竹?” 一聲冷哼從身側(cè)響起悟衩,我...
- 正文 年R本政府宣布蝙搔,位于F島的核電站,受9級特大地震影響考传,放射性物質(zhì)發(fā)生泄漏吃型。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一僚楞、第九天 我趴在偏房一處隱蔽的房頂上張望勤晚。 院中可真熱鬧,春花似錦泉褐、人聲如沸赐写。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽挺邀。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間端铛,已是汗流浹背泣矛。 一陣腳步聲響...