校验值是否合法

校验值是否合法

作者: 张首富
时间: 2021-04-13 
w x: Y18163201

前言

我们在任何编程语言中,都有传递的参数是否合法的需求,在 go 中我们可以引用下面的包直接来校验传递的参数是否合法

安装

go get -u github.com/astaxie/beego/validation

使用

package main

import (
	"fmt"
	"github.com/astaxie/beego/validation"
)

func main() {
	name := "123"
	valid := validation.Validation{}
	fmt.Println(valid.Required(name,"name").Message("名称不能为空"))
	name = ""
	fmt.Println(valid.Required(name,"name").Message("名称不能为空"))
}

运行得到的结果为:

$  go run main.go
&{ true}
&{名称不能为空 false}

方法

判断

Required 判断值是否存在

// 必填 测试参数是否为非零和非空(如果是字符串或列表)
func (v *Validation) Required(obj interface{}, key string) *Result {
	return v.apply(Required{key}, obj)
}

举例

name := "123"	
valid := validation.Validation{}
valid.Required(name,"name").Message("名称不能为空")

MinSize 判断给定的字段的最小长度

// MinSize 如果类型是字符串或切片,测试 obj 长度最小长度是否大于 min。
func (v *Validation) MinSize(obj interface{}, min int, key string) *Result {
	return v.apply(MinSize{min, key}, obj)
}

举例

name =  "123"
valid.MinSize(name,5,"name").Message("名称不得低于5个字符")

MsxSize 判断给定的字段的最大长度

// MaxSize 如果类型是字符串或切片,测试obj长度是否小于max。
func (v *Validation) MaxSize(obj interface{}, max int, key string) *Result {
	return v.apply(MaxSize{max, key}, obj)
}

举例

name := "123"	
valid.MaxSize(name,100,"name").Message("名称最长为 100 个字符")

Length 判断给定的字符串或切片的长度

// Length 如果类型是字符串或切片,测试obj长度是否等于 n 的长度。
func (v *Validation) Length(obj interface{}, n int, key string) *Result {
	return v.apply(Length{n, key}, obj)
}

Min int 类型判断最小值

// Min 如果类型是 int 类型,那么判断 obj 是否大于 min,大于为真
func (v *Validation) Min(obj interface{}, min int, key string) *Result {
	return v.apply(Min{min, key}, obj)
}

举例

	age := 30
	fmt.Println(valid.Min(age,20,"age").Message("值应该大于 20"))

Max int 类型判断最大值

// Max  如果类型是 int 类型,那么判断 obj 是否小于 max,小于为真
func (v *Validation) Max(obj interface{}, max int, key string) *Result {
	return v.apply(Max{max, key}, obj)
}

举例

	age := 30
	fmt.Println(valid.Min(age,20,"age").Message("值应该小于20"))

Range int 类型判断是否在范围内

// Range 如果obj的类型是int,则测试obj在mni和max之间。
func (v *Validation) Range(obj interface{}, min, max int, key string) *Result {
	return v.apply(Range{Min{Min: min}, Max{Max: max}, key}, obj)
}

Alpha 判断是否由字母组成的字符串

// Alpha 如果类型是字符串,测试obj是[a-zA-Z]。
func (v *Validation) Alpha(obj interface{}, key string) *Result {
	return v.apply(Alpha{key}, obj)
}

举例

	name = "AsadsB"
	fmt.Println(valid.Alpha(name,"name").Message("不是纯字符串"))
	name = "AdasdasBdasd*"
	fmt.Println(valid.Alpha(name,"name").Message("不是纯字符串"))
	name = "!qaz2wsx"
	fmt.Println(valid.Alpha(name,"name").Message("不是纯字符串"))

Numeric 是否为纯数字组成的字符串

// Numeric 如果类型是字符串,测试obj是[0-9]。
func (v *Validation) Numeric(obj interface{}, key string) *Result {
	return v.apply(Numeric{key}, obj)
}

AlphaNumeric 判断是否有数字和字母组成的字符串

// AlphaNumeric 如果类型是字符串,测试obj是[0-9a-zA-Z]。
func (v *Validation) AlphaNumeric(obj interface{}, key string) *Result {
	return v.apply(AlphaNumeric{key}, obj)
}

Match 正则匹配

// Match 如果类型是字符串,测试obj是否与regexp匹配
func (v *Validation) Match(obj interface{}, regex *regexp.Regexp, key string) *Result {
	return v.apply(Match{regex, key}, obj)
}

NoMatch 正则不匹配

// NoMatch Test that the obj doesn't match regexp if type is string
func (v *Validation) NoMatch(obj interface{}, regex *regexp.Regexp, key string) *Result {
	return v.apply(NoMatch{Match{Regexp: regex}, key}, obj)
}

Email 判断 email 地址格式是否合法

// Email 如果obj 是字符串,判断他的格式否是为正确的 email 格式
func (v *Validation) Email(obj interface{}, key string) *Result {
	return v.apply(Email{Match{Regexp: emailPattern}, key}, obj)
}

举例

	name = "zsf18163201@163.com"
	fmt.Println(valid.Email(name,"name").Message("不是合法的 email 地址"))
	name = "zsf18163201.com"
	fmt.Println(valid.Email(name,"name").Message("不是合法的 email 地址"))

IP 测试 IP 地址是否合法,不仅校验格式并且校验是否正确

// IP 如果类型为字符串,测试obj是否为IP地址。
func (v *Validation) IP(obj interface{}, key string) *Result {
	return v.apply(IP{Match{Regexp: ipPattern}, key}, obj)
}

Mobile 测试手机号是否为中国号码

// Mobile 如果类型为字符串,测试obj是否为中国手机号码。
func (v *Validation) Mobile(obj interface{}, key string) *Result {
	return v.apply(Mobile{Match{Regexp: mobilePattern}, key}, obj)
}

HasErrors 判断之前有没有执行的有没有错误,有错误为真

// HasErrors Has ValidationError nor not.
func (v *Validation) HasErrors() bool {
	return len(v.Errors) > 0
}
posted @ 2021-04-13 15:16  张首富  阅读(215)  评论(0编辑  收藏  举报