第十一单元 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"] = "添加失败"
}
}