Validator
validator 验证器包,包含常用字符串格式验证函数。
源码:
用法:
import (
"github.com/duke-git/lancet/v2/validator"
)
目录:
- ContainChinese
- ContainLetter
- ContainLower
- ContainUpper
- IsAlpha
- IsAllUpper
- IsAllLower
- IsASCII
- IsBase64
- IsChineseMobile
- IsChineseIdNum
- IsChinesePhone
- IsCreditCard
- IsDns
- IsEmail
- IsEmptyString
- IsInt
- IsFloat
- IsNumber
- IsIntStr
- IsFloatStr
- IsNumberStr
- IsJSON
- IsRegexMatch
- IsIp
- IsIpV4
- IsIpV6
- IsStrongPassword
- IsUrl
- IsWeakPassword
- IsZeroValue
- IsGBK
- IsPrintable
- IsBin
- IsHex
- IsBase64URL
- IsJWT
- IsVisa
- IsMasterCard
- IsAmericanExpress
- IsUnionPay
- IsChinaUnionPay
文档
ContainChinese
验证字符串是否包含中文字符。
函数签名:
func ContainChinese(s string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.ContainChinese("你好")
result2 := validator.ContainChinese("你好hello")
result3 := validator.ContainChinese("hello")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// true
// false
}
ContainLetter
验证字符串是否包含至少一个英文字母。
函数签名:
func ContainLetter(str string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.ContainLetter("你好")
result2 := validator.ContainLetter("&@#$%^&*")
result3 := validator.ContainLetter("ab1")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// false
// false
// true
}
ContainLower
验证字符串是否包含至少一个英文小写字母。
函数签名:
func ContainLower(str string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.ContainLower("abc")
result2 := validator.ContainLower("aBC")
result3 := validator.ContainLower("ABC")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// true
// false
}
ContainUpper
验证字符串是否包含至少一个英文大写字母。
函数签名:
func ContainUpper(str string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.ContainUpper("ABC")
result2 := validator.ContainUpper("abC")
result3 := validator.ContainUpper("abc")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// true
// false
}
IsAlpha
验证字符串是否只包含英文字母。
函数签名:
func IsAlpha(s string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsAlpha("abc")
result2 := validator.IsAlpha("ab1")
result3 := validator.IsAlpha("")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// false
// false
}
IsAllUpper
验证字符串是否全是大写英文字母。
函数签名:
func IsAllUpper(str string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsAllUpper("ABC")
result2 := validator.IsAllUpper("ABc")
result3 := validator.IsAllUpper("AB1")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// false
// false
}
IsAllLower
验证字符串是否全是小写英文字母。
函数签名:
func IsAllLower(str string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsAllLower("abc")
result2 := validator.IsAllLower("abC")
result3 := validator.IsAllLower("ab1")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// false
// false
}
IsASCII
验证字符串全部为ASCII字符。
函数签名:
func IsASCII(str string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsASCII("ABC")
result2 := validator.IsASCII("123")
result3 := validator.IsASCII("")
result4 := validator.IsASCII("😄")
result5 := validator.IsASCII("你好")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
// Output:
// true
// true
// true
// false
// false
}
IsBase64
验证字符串是否是base64编码。
函数签名:
func IsBase64(base64 string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsBase64("aGVsbG8=")
result2 := validator.IsBase64("123456")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsChineseMobile
验证字符串是否是中国手机号码。
函数签名:
func IsChineseMobile(mobileNum string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsChineseMobile("13263527980")
result2 := validator.IsChineseMobile("434324324")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsChineseIdNum
验证字符串是否是中国身份证号码。
函数签名:
func IsChineseIdNum(id string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsChineseIdNum("210911192105130715")
result2 := validator.IsChineseIdNum("123456")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsChinesePhone
验证字符串是否是中国电话座机号码。
函数签名:
func IsChinesePhone(phone string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsChinesePhone("010-32116675")
result2 := validator.IsChinesePhone("123-87562")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsCreditCard
验证字符串是否是信用卡号码。
函数签名:
func IsCreditCard(creditCart string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsCreditCard("4111111111111111")
result2 := validator.IsCreditCard("123456")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsDns
验证字符串是否是有效dns。
函数签名:
func IsDns(dns string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsDns("abc.com")
result2 := validator.IsDns("a.b.com")
result3 := validator.IsDns("http://abc.com")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// false
// false
}
IsEmail
验证字符串是否是有效电子邮件地址。
函数签名:
func IsEmail(email string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsEmail("abc@xyz.com")
result2 := validator.IsEmail("a.b@@com")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsEmptyString
验证字符串是否是空字符串。
函数签名:
func IsEmptyString(s string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsEmptyString("")
result2 := validator.IsEmptyString(" ")
result3 := validator.IsEmptyString("\t")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// false
// false
}
IsInt
验证参数是否是整数(int, unit)。
函数签名:
func IsInt(v any) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsInt("")
result2 := validator.IsInt("3")
result3 := validator.IsInt(0.1)
result4 := validator.IsInt(0)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// false
// false
// false
// true
}
IsFloat
验证参数是否是浮点数(float32, float34)。
函数签名:
func IsFloat(v any) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsFloat("")
result2 := validator.IsFloat("3")
result3 := validator.IsFloat(0)
result4 := validator.IsFloat(0.1)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// false
// false
// false
// true
}
IsNumber
验证参数是否是数字(integer or float)。
函数签名:
func IsNumber(v any) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsNumber("")
result2 := validator.IsNumber("3")
result3 := validator.IsNumber(0.1)
result4 := validator.IsNumber(0)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// false
// false
// true
// true
}
IsIntStr
验证字符串是否是可以转换为整数。
函数签名:
func IsIntStr(s string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsIntStr("+3")
result2 := validator.IsIntStr("-3")
result3 := validator.IsIntStr("3.")
result4 := validator.IsIntStr("abc")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// true
// true
// false
// false
}
IsFloatStr
验证字符串是否是可以转换为浮点数。
函数签名:
func IsFloatStr(s string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsFloatStr("3.")
result2 := validator.IsFloatStr("+3.")
result3 := validator.IsFloatStr("12")
result4 := validator.IsFloatStr("abc")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// true
// true
// true
// false
}
IsNumberStr
验证字符串是否是可以转换为数字。
函数签名:
func IsNumberStr(s string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsNumberStr("3.")
result2 := validator.IsNumberStr("+3.")
result3 := validator.IsNumberStr("+3e2")
result4 := validator.IsNumberStr("abc")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// true
// true
// true
// false
}
IsJSON
验证字符串是否是有效json。
函数签名:
func IsJSON(str string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsJSON("{}")
result2 := validator.IsJSON("{\"name\": \"test\"}")
result3 := validator.IsJSON("")
result4 := validator.IsJSON("abc")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// true
// true
// false
// false
}
IsRegexMatch
验证字符串是否可以匹配正则表达式。
函数签名:
func IsRegexMatch(s, regex string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsRegexMatch("abc", `^[a-zA-Z]+$`)
result2 := validator.IsRegexMatch("ab1", `^[a-zA-Z]+$`)
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsIp
验证字符串是否是ip地址。
函数签名:
func IsIp(ipstr string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsIp("127.0.0.1")
result2 := validator.IsIp("::0:0:0:0:0:0:1")
result3 := validator.IsIp("127.0.0")
result4 := validator.IsIp("::0:0:0:0:")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// true
// true
// false
// false
}
IsIpV4
验证字符串是否是ipv4地址。
函数签名:
func IsIpV4(ipstr string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsIpV4("127.0.0.1")
result2 := validator.IsIpV4("::0:0:0:0:0:0:1")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsIpV6
验证字符串是否是ipv6地址。
函数签名:
func IsIpV6(ipstr string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsIpV6("127.0.0.1")
result2 := validator.IsIpV6("::0:0:0:0:0:0:1")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// false
// true
}
IsStrongPassword
验证字符串是否是强密码:(alpha(lower+upper) + number + special chars(!@#$%^&*()?><))。
函数签名:
func IsStrongPassword(password string, length int) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsStrongPassword("abcABC", 6)
result2 := validator.IsStrongPassword("abcABC123@#$", 10)
fmt.Println(result1)
fmt.Println(result2)
// Output:
// false
// true
}
IsUrl
验证字符串是否是url。
函数签名:
func IsUrl(str string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsUrl("abc.com")
result2 := validator.IsUrl("http://abc.com")
result3 := validator.IsUrl("abc")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// true
// false
}
IsWeakPassword
验证字符串是否是弱密码:(only letter or only number or letter + number) 。
函数签名:
func IsWeakPassword(password string, length int) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsWeakPassword("abcABC")
result2 := validator.IsWeakPassword("abc123@#$")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsZeroValue
判断传入的参数值是否为零值。
函数签名:
func IsZeroValue(value any) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsZeroValue("")
result2 := validator.IsZeroValue(0)
result3 := validator.IsZeroValue("abc")
result4 := validator.IsZeroValue(1)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// true
// true
// false
// false
}
IsGBK
检查数据编码是否为gbk(汉字内部代码扩展规范)。该函数的实现取决于双字节是否在gbk的编码范围内,而utf-8编码格式的每个字节都在gbk编码范围内。因此,应该首先调用utf8.valid检查它是否是utf-8编码,然后调用IsGBK检查gbk编码。如示例所示。
函数签名:
func IsGBK(data []byte) bool
示例:运行
import (
"fmt"
"golang.org/x/text/encoding/simplifiedchinese"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
str := "你好"
gbkData, _ := simplifiedchinese.GBK.NewEncoder().Bytes([]byte(str))
result := validator.IsGBK(gbkData)
fmt.Println(result)
// Output:
// true
}
IsPrintable
检查字符串是否全部为可打印字符。
函数签名:
func IsPrintable(str string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsPrintable("ABC")
result2 := validator.IsPrintable("{id: 123}")
result3 := validator.IsPrintable("")
result4 := validator.IsPrintable("😄")
result5 := validator.IsPrintable("\u0000")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
// Output:
// true
// true
// true
// true
// false
}
IsBin
检查字符串是否是有效的二进制数。
函数签名:
func IsBin(v string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsBin("0101")
result2 := validator.IsBin("0b1101")
result3 := validator.IsBin("b1101")
result4 := validator.IsBin("1201")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// true
// true
// false
// false
}
IsHex
检查字符串是否是有效的十六进制数。
函数签名:
func IsHex(v string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsHex("0xabcde")
result2 := validator.IsHex("0XABCDE")
result3 := validator.IsHex("cdfeg")
result4 := validator.IsHex("0xcdfeg")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// true
// true
// false
// false
}
IsBase64URL
检查字符串是否是有效的base64 url。
函数签名:
func IsBase64URL(v string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsBase64URL("SAGsbG8sIHdvcmxkIQ")
result2 := validator.IsBase64URL("SAGsbG8sIHdvcmxkIQ==")
result3 := validator.IsBase64URL("SAGsbG8sIHdvcmxkIQ=")
result4 := validator.IsBase64URL("SAGsbG8sIHdvcmxkIQ===")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// true
// true
// false
// false
}
IsJWT
检查字符串是否是有效的JSON Web Token (JWT)。
函数签名:
func IsJWT(v string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsJWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibWVzc2FnZSI6IlB1dGluIGlzIGFic29sdXRlIHNoaXQiLCJpYXQiOjE1MTYyMzkwMjJ9.wkLWA5GtCpWdxNOrRse8yHZgORDgf8TpJp73WUQb910")
result2 := validator.IsJWT("abc")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsVisa
检查字符串是否是有效的visa卡号。
函数签名:
func IsVisa(v string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsVisa("4111111111111111")
result2 := validator.IsVisa("123")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsMasterCard
检查字符串是否是有效的MasterCard卡号。
函数签名:
func IsMasterCard(v string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsMasterCard("5425233430109903")
result2 := validator.IsMasterCard("4111111111111111")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsAmericanExpress
检查字符串是否是有效的American Express卡号。
函数签名:
func IsAmericanExpress(v string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsAmericanExpress("342883359122187")
result2 := validator.IsAmericanExpress("3782822463100007")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsUnionPay
检查字符串是否是有效的美国银联卡号。
函数签名:
func IsUnionPay(v string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsUnionPay("6221263430109903")
result2 := validator.IsUnionPay("3782822463100007")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}
IsChinaUnionPay
检查字符串是否是有效的中国银联卡号。
函数签名:
func IsChinaUnionPay(v string) bool
示例:运行
import (
"fmt"
"github.com/duke-git/lancet/v2/validator"
)
func main() {
result1 := validator.IsChinaUnionPay("6250941006528599")
result2 := validator.IsChinaUnionPay("3782822463100007")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}