第十一单元 beego验证

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

	}

}

  

posted @ 2020-07-28 08:11  flex_song  阅读(296)  评论(0编辑  收藏  举报