第十一单元 beego验证 一、原生正则使用 //初始化结构体对象的方法 func Compile(expr string) (*Regexp, error) //和Compile函数相似,但是该方法支持POSIX协议,可以支持类似`egrep`的语法 func CompilePOSIX(expr string) (*Regexp, error) //Must系列函数和上面两个函数相似,但是不会返回error,如果有异常直接panic func MustCompile(str string) *Regexp //在字符串中是否匹配到re定义的字符串,匹配返回true func (re *Regexp) MatchString(s string) bool //结构体方法.常用的几个 //在字符串s中查找完全匹配正则表达式re的字符串.如果匹配到就停止不进行全部匹配,如果匹配不到就输出空字符串 func (re *Regexp) FindString(s string) string //在字符串s中匹配re表达式,n表示匹配的次数,-1表示匹配整个字符串。返回字符串切片 func (re *Regexp) FindAllString(s string, n int) []string //在src中匹配re,并替换为repl,该种方式中repl中的$符号会展开实际的变量,通常用在回溯查找中 func (re *Regexp) ReplaceAllString(src, repl string) string 代码示例 r, _ := regexp.Compile("[a-z]") // fmt.Println(r.MatchString("adddd")) //fmt.Println(r.FindString("abd123")) fmt.Println(r.FindAllString("abd123", -1)) fmt.Println(r.ReplaceAllString("abd1234", "*")) 二、beego validation验证使用 package controllers import ( "1803a_chapter9/models" "fmt" "strconv" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" "github.com/astaxie/beego/validation" ) type MemberController struct { beego.Controller } //会员信息添加 func (c *MemberController) AddMember() { reJson := make(map[string]interface{}) c.Data["json"] = reJson defer c.ServeJSON() o := orm.NewOrm() var member models.Member member.Name = c.GetString("name") member.Email = c.GetString("email") member.Age, _ = c.GetInt("age", 18) valid := validation.Validation{} valid.Required(member.Name, "Name").Message("用户名不能为空!") valid.MinSize(member.Name, 5, "Name").Message("用户名必须5个字符以上") valid.Email(member.Email, "Email").Message("邮箱格式不正确") valid.Range(member.Age, 8, 20, "Age").Message("年龄不在范围内") if valid.HasErrors() { reJson["status"] = "failed" errMsg := []string{} for _, error := range valid.Errors { errMsg = append(errMsg, error.Message) } reJson["message"] = errMsg return } _, err := o.Insert(&member) if err == nil { reJson["status"] = "ok" reJson["message"] = "添加成功" } else { reJson["status"] = "faild" reJson["message"] = "添加失败" } }