表单验证 ~~~ |-- routers | `-- router.go ~~~ ~~~ package routers import ( admin "project/admin/controllers" "github.com/astaxie/beego" ) func init() { // 固定路由也就是全匹配的路由 beego.Router("/admin/user/index", &admin.UserController{}, "*:Index") } ~~~ ~~~ |-- admin | |--controllers | `-- user.go ~~~ ~~~ package admin import ( "fmt" "regexp" "github.com/astaxie/beego" "github.com/astaxie/beego/validation" ) type UserController struct { beego.Controller } func (this *UserController) Index() { valid := validation.Validation{} // Required 不为空,即各个类型要求不为其零值 res := valid.Required(nil, "name") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Required 不为空 : ", res.Error.Key, res.Error.Message)) } // Min(min int) 最小值,有效类型:int,其他类型都将不能通过验证 res = valid.Min(16, 18, "min_age") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Min(min int) 最小值 : ", res.Error.Key, res.Error.Message)) } // Max(max int) 最大值,有效类型:int,其他类型都将不能通过验证 res = valid.Max(20, 19, "max_age") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Max(max int) 最大值 : ", res.Error.Key, res.Error.Message)) } // Range(min, max int) 数值的范围,有效类型:int,他类型都将不能通过验证 res = valid.Range(nil, 16, 18, "range_age") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Range(min, max int) 数值的范围 : ", res.Error.Key, res.Error.Message)) } // MinSize(min int) 最小长度,有效类型:string slice,其他类型都将不能通过验证 res = valid.MinSize(123, 5, "min_size") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("MinSize(min int) 最小长度 : ", res.Error.Key, res.Error.Message)) } // MaxSize(max int) 最大长度,有效类型:string slice,其他类型都将不能通过验证 res = valid.MaxSize(123, 2, "max_size") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("MaxSize(max int) 最大长度 : ", res.Error.Key, res.Error.Message)) } // Length(length int) 指定长度,有效类型:string slice,其他类型都将不能通过验证 res = valid.Length(0, 1, "length") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Length(length int) 指定长度 : ", res.Error.Key, res.Error.Message)) } // Alpha alpha字符,有效类型:string,其他类型都将不能通过验证 // res = valid.Alpha("", "alpha") res = valid.Alpha(nil, "alpha") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Alpha alpha字符 : ", res.Error.Key, res.Error.Message)) } // Numeric 数字,有效类型:string,其他类型都将不能通过验证 // res = valid.Numeric("2", "numeric") res = valid.Numeric(2, "numeric") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Numeric 数字 : ", res.Error.Key, res.Error.Message)) } // AlphaNumeric alpha 字符或数字,有效类型:string,其他类型都将不能通过验证 res = valid.AlphaNumeric(nil, "AlphaNumeric") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("AlphaNumeric alpha 字符或数字 : ", res.Error.Key, res.Error.Message)) } // Match(pattern string) 正则匹配,有效类型:string,其他类型都将被转成字符串再匹配(fmt.Sprintf(“%v”, obj).Match) // res = valid.Match("123456789", regexp.MustCompile(`^(\-|\+)?\d+(\.\d+)?$`), "Match") res = valid.Match("abc", regexp.MustCompile(`^(\-|\+)?\d+(\.\d+)?$`), "Match") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Match(pattern string) 正则匹配 : ", res.Error.Key, res.Error.Message)) } // AlphaDash alpha字符或数字或横杠-_,有效类型:string,其他类型都将不能通过验证 res = valid.AlphaDash(nil, "AlphaDash") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("AlphaDash alpha字符或数字或横杠-_,有效类型 : ", res.Error.Key, res.Error.Message)) } // Email邮箱格式,有效类型:string,其他类型都将不能通过验证 // res = valid.Email("123456@qq.com", "email") res = valid.Email("123456qq.com", "email") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Email邮箱格式 : ", res.Error.Key, res.Error.Message)) } // IP IP格式,目前只支持IPv4格式验证,有效类型:string,其他类型都将不能通过验证 // res = valid.IP("192.168.0.1", "ip") res = valid.IP("192.168.300.1", "ip") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("IP格式 : ", res.Error.Key, res.Error.Message)) } // Base64 base64编码,有效类型:string,其他类型都将不能通过验证 // res = valid.Base64(base64.StdEncoding.EncodeToString([]byte("abc")), "base64") res = valid.Base64(nil, "base64") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("base64编码 : ", res.Error.Key, res.Error.Message)) } // Mobile手机号,有效类型:string,其他类型都将不能通过验证 // res = valid.Mobile("+8615621628869", "mobile") // res = valid.Mobile("15621628869", "mobile") // res = valid.Mobile(15621628869, "mobile") res = valid.Mobile("+861528869", "mobile") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Mobile手机号 : ", res.Error.Key, res.Error.Message)) } // Tel固定电话号,有效类型:string,其他类型都将不能通过验证 // res = valid.Tel("010-7700008", "tel") res = valid.Tel("15621628869", "tel") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Tel固定电话号 : ", res.Error.Key, res.Error.Message)) } // Phone手机号或固定电话号,有效类型:string,其他类型都将不能通过验证 res = valid.Phone("110", "phone") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("Phone手机号或固定电话号 : ", res.Error.Key, res.Error.Message)) } // ZipCode邮政编码,有效类型:string,其他类型都将不能通过验证 // res = valid.ZipCode("100000", "zipcode") res = valid.ZipCode("000000", "zipcode") if !res.Ok { this.Ctx.WriteString(fmt.Sprintln("ZipCode邮政编码 : ", res.Error.Key, res.Error.Message)) } } ~~~ 浏览器访问: http://127.0.0.1:8080/admin/user/index 浏览器输出: ~~~ Required 不为空 : name Can not be empty Min(min int) 最小值 : min_age Minimum is 18 Max(max int) 最大值 : max_age Maximum is 19 Range(min, max int) 数值的范围 : range_age Range is 16 to 18 MinSize(min int) 最小长度 : min_size Minimum size is 5 MaxSize(max int) 最大长度 : max_size Maximum size is 2 Length(length int) 指定长度 : length Required length is 1 Alpha alpha字符 : alpha Must be valid alpha characters Numeric 数字 : numeric Must be valid numeric characters AlphaNumeric alpha 字符或数字 : AlphaNumeric Must be valid alpha or numeric characters Match(pattern string) 正则匹配 : Match Must match ^(\-|\+)?\d+(\.\d+)?$ AlphaDash alpha字符或数字或横杠-_,有效类型 : AlphaDash Must be valid alpha or numeric or dash(-_) characters Email邮箱格式 : email Must be a valid email address IP格式 : ip Must be a valid ip address base64编码 : base64 Must be valid base64 characters Mobile手机号 : mobile Must be valid mobile number Tel固定电话号 : tel Must be valid telephone number Phone手机号或固定电话号 : phone Must be valid telephone or mobile phone number ZipCode邮政编码 : zipcode Must be valid zipcode ~~~