# Validator validator 验证器包,包含常用字符串格式验证函数。
## 源码: - [https://github.com/duke-git/lancet/blob/main/validator/validator.go](https://github.com/duke-git/lancet/blob/main/validator/validator.go) ## 用法: ```go import ( "github.com/duke-git/lancet/v2/validator" ) ``` ## 目录: - [ContainChinese](#ContainChinese) - [ContainLetter](#ContainLetter) - [ContainLower](#ContainLower) - [ContainUpper](#ContainUpper) - [IsAlpha](#IsAlpha) - [IsAllUpper](#IsAllUpper) - [IsAllLower](#IsAllLower) - [IsASCII](#IsASCII) - [IsBase64](#IsBase64) - [IsChineseMobile](#IsChineseMobile) - [IsChineseIdNum](#IsChineseIdNum) - [IsChinesePhone](#IsChinesePhone) - [IsCreditCard](#IsCreditCard) - [IsDns](#IsDns) - [IsEmail](#IsEmail) - [IsEmptyString](#IsEmptyString) - [IsInt](#IsInt) - [IsFloat](#IsFloat) - [IsNumber](#IsNumber) - [IsIntStr](#IsIntStr) - [IsFloatStr](#IsFloatStr) - [IsNumberStr](#IsNumberStr) - [IsJSON](#IsJSON) - [IsRegexMatch](#IsRegexMatch) - [IsIp](#IsIp) - [IsIpV4](#IsIpV4) - [IsIpV6](#IsIpV6) - [IsStrongPassword](#IsStrongPassword) - [IsUrl](#IsUrl) - [IsWeakPassword](#IsWeakPassword) - [IsZeroValue](#IsZeroValue) - [IsGBK](#IsGBK) - [IsPrintable](#IsPrintable) ## 文档 ### ContainChinese验证字符串是否包含中文字符。
函数签名: ```go func ContainChinese(s string) bool ``` 示例: ```go 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验证字符串是否包含至少一个英文字母。
函数签名: ```go func ContainLetter(str string) bool ``` 示例: ```go 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验证字符串是否包含至少一个英文小写字母。
函数签名: ```go func ContainLower(str string) bool ``` 示例: ```go 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验证字符串是否包含至少一个英文大写字母。
函数签名: ```go func ContainUpper(str string) bool ``` 示例: ```go 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验证字符串是否只包含英文字母。
函数签名: ```go func IsAlpha(s string) bool ``` 示例: ```go 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验证字符串是否全是大写英文字母。
函数签名: ```go func IsAllUpper(str string) bool ``` 示例: ```go 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验证字符串是否全是小写英文字母。
函数签名: ```go func IsAllLower(str string) bool ``` 示例: ```go 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字符。
函数签名: ```go func IsASCII(str string) bool ``` 示例: ```go 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编码。
函数签名: ```go func IsBase64(base64 string) bool ``` 示例: ```go 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验证字符串是否是中国手机号码。
函数签名: ```go func IsChineseMobile(mobileNum string) bool ``` 示例: ```go 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验证字符串是否是中国身份证号码。
函数签名: ```go func IsChineseIdNum(id string) bool ``` 示例: ```go 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验证字符串是否是中国电话座机号码。
函数签名: ```go func IsChinesePhone(phone string) bool ``` 示例: ```go 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验证字符串是否是信用卡号码。
函数签名: ```go func IsCreditCard(creditCart string) bool ``` 示例: ```go 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。
函数签名: ```go func IsDns(dns string) bool ``` 示例: ```go 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验证字符串是否是有效电子邮件地址。
函数签名: ```go func IsEmail(email string) bool ``` 示例: ```go 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验证字符串是否是空字符串。
函数签名: ```go func IsEmptyString(s string) bool ``` 示例: ```go 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)。
函数签名: ```go func IsInt(v any) bool ``` 示例: ```go 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)。
函数签名: ```go func IsFloat(v any) bool ``` 示例: ```go 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)
函数签名: ```go func IsNumber(v any) bool ``` 示例: ```go 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验证字符串是否是可以转换为整数
函数签名: ```go func IsIntStr(s string) bool ``` 示例: ```go 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验证字符串是否是可以转换为浮点数
函数签名: ```go func IsFloatStr(s string) bool ``` 示例: ```go 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验证字符串是否是可以转换为数字
函数签名: ```go func IsNumberStr(s string) bool ``` 示例: ```go 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
函数签名: ```go func IsJSON(str string) bool ``` 示例: ```go 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验证字符串是否可以匹配正则表达式
函数签名: ```go func IsRegexMatch(s, regex string) bool ``` 示例: ```go 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地址
函数签名: ```go func IsIp(ipstr string) bool ``` 示例: ```go 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地址
函数签名: ```go func IsIpV4(ipstr string) bool ``` 示例: ```go 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地址
函数签名: ```go func IsIpV6(ipstr string) bool ``` 示例: ```go 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(!@#$%^&*()?><))
函数签名: ```go func IsStrongPassword(password string, length int) bool ``` 示例: ```go 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
函数签名: ```go func IsUrl(str string) bool ``` 示例: ```go 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) .
函数签名: ```go func IsWeakPassword(password string, length int) bool ``` 示例: ```go 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判断传入的参数值是否为零值。
函数签名: ```go func IsZeroValue(value any) bool ``` 示例: ```go 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编码。如示例所示。
函数签名: ```go func IsGBK(data []byte) bool ``` 示例: ```go 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检查字符串是否全部为可打印字符。
函数签名: ```go func IsPrintable(str string) bool ``` 示例: ```go 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 } ```