1.表单验证
最后更新于:2022-04-02 04:54:00
表单验证
~~~
|-- 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
~~~
';