beego表单验证

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("[email protected]", "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))
	}
}

beego表单验证