前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >校验值是否合法 validation

校验值是否合法 validation

原创
作者头像
张琳兮
修改2021-04-13 17:41:10
1.1K0
修改2021-04-13 17:41:10
举报
文章被收录于专栏:首富手记

校验值是否合法

代码语言:txt
复制
作者: 张首富
时间: 2021-04-13 
w x: Y18163201

前言

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

安装

代码语言:txt
复制
go get -u github.com/astaxie/beego/validation

使用

代码语言:txt
复制
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("名称不能为空"))
}

运行得到的结果为:

代码语言:txt
复制
$  go run main.go
&{ true}
&{名称不能为空 false}

方法

判断

Required 判断值是否存在
代码语言:txt
复制
// 必填 测试参数是否为非零和非空(如果是字符串或列表)
func (v *Validation) Required(obj interface{}, key string) *Result {
	return v.apply(Required{key}, obj)
}

举例

代码语言:txt
复制
name := "123"	
valid := validation.Validation{}
valid.Required(name,"name").Message("名称不能为空")
MinSize 判断给定的字段的最小长度
代码语言:txt
复制
// MinSize 如果类型是字符串或切片,测试 obj 长度最小长度是否大于 min。
func (v *Validation) MinSize(obj interface{}, min int, key string) *Result {
	return v.apply(MinSize{min, key}, obj)
}

举例

代码语言:txt
复制
name =  "123"
valid.MinSize(name,5,"name").Message("名称不得低于5个字符")
MsxSize 判断给定的字段的最大长度
代码语言:txt
复制
// MaxSize 如果类型是字符串或切片,测试obj长度是否小于max。
func (v *Validation) MaxSize(obj interface{}, max int, key string) *Result {
	return v.apply(MaxSize{max, key}, obj)
}

举例

代码语言:txt
复制
name := "123"	
valid.MaxSize(name,100,"name").Message("名称最长为 100 个字符")
Length 判断给定的字符串或切片的长度
代码语言:txt
复制
// Length 如果类型是字符串或切片,测试obj长度是否等于 n 的长度。
func (v *Validation) Length(obj interface{}, n int, key string) *Result {
	return v.apply(Length{n, key}, obj)
}
Min int 类型判断最小值
代码语言:txt
复制
// Min 如果类型是 int 类型,那么判断 obj 是否大于 min,大于为真
func (v *Validation) Min(obj interface{}, min int, key string) *Result {
	return v.apply(Min{min, key}, obj)
}

举例

代码语言:txt
复制
	age := 30
	fmt.Println(valid.Min(age,20,"age").Message("值应该大于 20"))
Max int 类型判断最大值
代码语言:txt
复制
// Max  如果类型是 int 类型,那么判断 obj 是否小于 max,小于为真
func (v *Validation) Max(obj interface{}, max int, key string) *Result {
	return v.apply(Max{max, key}, obj)
}

举例

代码语言:txt
复制
	age := 30
	fmt.Println(valid.Min(age,20,"age").Message("值应该小于20"))

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

代码语言:txt
复制
// 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 判断是否由字母组成的字符串
代码语言:txt
复制
// Alpha 如果类型是字符串,测试obj是[a-zA-Z]。
func (v *Validation) Alpha(obj interface{}, key string) *Result {
	return v.apply(Alpha{key}, obj)
}

举例

代码语言:txt
复制
	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 是否为纯数字组成的字符串
代码语言:txt
复制
// Numeric 如果类型是字符串,测试obj是[0-9]。
func (v *Validation) Numeric(obj interface{}, key string) *Result {
	return v.apply(Numeric{key}, obj)
}
AlphaNumeric 判断是否有数字和字母组成的字符串
代码语言:txt
复制
// AlphaNumeric 如果类型是字符串,测试obj是[0-9a-zA-Z]。
func (v *Validation) AlphaNumeric(obj interface{}, key string) *Result {
	return v.apply(AlphaNumeric{key}, obj)
}
Match 正则匹配
代码语言:txt
复制
// Match 如果类型是字符串,测试obj是否与regexp匹配
func (v *Validation) Match(obj interface{}, regex *regexp.Regexp, key string) *Result {
	return v.apply(Match{regex, key}, obj)
}
NoMatch 正则不匹配
代码语言:txt
复制
// 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 地址格式是否合法
代码语言:txt
复制
// Email 如果obj 是字符串,判断他的格式否是为正确的 email 格式
func (v *Validation) Email(obj interface{}, key string) *Result {
	return v.apply(Email{Match{Regexp: emailPattern}, key}, obj)
}

举例

代码语言:txt
复制
	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 地址是否合法,不仅校验格式并且校验是否正确
代码语言:txt
复制
// IP 如果类型为字符串,测试obj是否为IP地址。
func (v *Validation) IP(obj interface{}, key string) *Result {
	return v.apply(IP{Match{Regexp: ipPattern}, key}, obj)
}
Mobile 测试手机号是否为中国号码
代码语言:txt
复制
// Mobile 如果类型为字符串,测试obj是否为中国手机号码。
func (v *Validation) Mobile(obj interface{}, key string) *Result {
	return v.apply(Mobile{Match{Regexp: mobilePattern}, key}, obj)
}

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

代码语言:txt
复制
// HasErrors Has ValidationError nor not.
func (v *Validation) HasErrors() bool {
	return len(v.Errors) > 0
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 校验值是否合法
    • 前言
      • 安装
        • 使用
          • 方法
            • 判断
            • Range int 类型判断是否在范围内
            • HasErrors 判断之前有没有执行的有没有错误,有错误为真
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档