package common
import (
"errors"
"fmt"
"regexp"
"unicode/utf8"
)
/*
[:graph:] 图形字符 (相当于 [!-~])
[:word:] 单词字符(相当于 [0-9A-Za-z_])
[:alnum:] 字母数字 (相当于 [0-9A-Za-z])
[:alpha:] 字母 (相当于 [A-Za-z])
[:digit:] 数字 (相当于 [0-9])
[:lower:] 小写字母 (相当于 [a-z])
[:upper:] 大写字母(相当于 [A-Z])
[:blank:] 空白占位符 (相当于 [\t ])
[:print:] 可打印字符 (相当于 [ -~] 相当于 [ [:graph:]])
[:punct:] 标点符号 (相当于 [!-/:-@[-反引号{-~])
[:space:] 空白字符(相当于 [\t\n\v\f\r ])
[:ascii:] ASCII 字符集 (相当于 [\x00-\x7F])
[:cntrl:] 控制字符 (相当于 [\x00-\x1F\x7F])
*/
/*
密码:中英文、数字、符号;至少同时包含字母和数字 6~20字符
文件名:只能包含中英文数字和下划线 <=24字符
昵称:中英文数字 <=24字符
姓名:中英文 <=24字符
参数:中英文 <=12字符
len(s) 返回的是字节数
utf8.RuneCountInString(s) 返回字符数
*/
//字符串验证:中英文数字
func ValidateString(str string, len int) (code int) {
nl := regexp.MustCompile("[^\u4e00-\u9fa50-9A-Za-z]+") //是否包含之外的字符,true包含 false不包含
if nl.MatchString(str) {
return -1
}
sLen := utf8.RuneCountInString(str)
if sLen > len || sLen < 1 {
return -1
}
return
}
//密码:中英文、数字、符号;至少同时包含字母和数字 6~20字符
func ValidatePassword(str string, len ...int) (err error) {
nl := regexp.MustCompile("[^0-9A-Za-z!-~]+") //是否包含之外的字符,true包含 false不包含
if nl.MatchString(str) {
err = errors.New("Contains characters other than numeric letters symbol. ")
}
l := regexp.MustCompile("[a-zA-Z]+") //必须包含字母 true包含
if !l.MatchString(str) {
err = errors.New("Must contain a letters. ")
}
n := regexp.MustCompile("[0-9]+") //必须包含数字 true包含
if !n.MatchString(str) {
err = errors.New("Must contain a number. ")
}
sLen := utf8.RuneCountInString(str)
if sLen > 20 {
err = errors.New("Length greater than 20. ")
}
if sLen < 6 {
err = errors.New("Length less than 6. ")
}
return
}
//文件名:只能包含中英文数字和下划线 <=24字符
func ValidateFileName(str string, len ...int) (err error) {
nl := regexp.MustCompile("[^\u4e00-\u9fa50-9A-Za-z_]+") //是否之外的字符,true包含 false不包含
if nl.MatchString(str) {
err = errors.New("Contains characters other than Hanzi numeric letters _. ")
}
sLen := utf8.RuneCountInString(str)
if sLen > 24 {
err = errors.New("Length greater than 24. ")
}
if sLen < 1 {
err = errors.New("Length less than 1. ")
}
return
}
//姓名:中英文 <=24字符
func ValidateName(str string, len ...int) (err error) {
cl := regexp.MustCompile("[^\u4e00-\u9fa5A-Za-z]+") //是否包含之外的字符,true包含 false不包含
if cl.MatchString(str) {
err = errors.New("Contains characters other than Hanzi letters. ")
}
sLen := utf8.RuneCountInString(str)
if sLen > 24 {
err = errors.New("Length greater than 24. ")
}
if sLen < 1 {
err = errors.New("Length less than 1. ")
}
return
}
//昵称:中英文数字 <=24字符
func ValidateNickname(str string, len int) (err error) {
nl := regexp.MustCompile("[^\u4e00-\u9fa50-9A-Za-z]+") //是否包含之外的字符,true包含 false不包含
if nl.MatchString(str) {
err = errors.New("Contains characters other than Hanzi letters num. ")
}
sLen := utf8.RuneCountInString(str)
if sLen > len {
err = errors.New("Length greater than 24. ")
}
if sLen < 1 {
err = errors.New("Length less than 1. ")
}
return
}
//参数:中英文 <=12字符
func ValidateParam(str string, len int) (code int) {
zl := regexp.MustCompile("[^\u4e00-\u9fa5A-Za-z]+") //是否包含之外的字符,true包含 false不包含
if zl.MatchString(str) {
//code = e.ERROR_PARAM_NAME
}
sLen := utf8.RuneCountInString(str)
if sLen > len || sLen < 1 {
fmt.Println("sLen:", sLen)
//code = e.ERROR_PARAM_NAMELEN
}
return
}
//参数:英文数字
func ValidateLetter(str string) (err error) {
zl := regexp.MustCompile("[^0-9A-Za-z]+") //是否包含之外的字符,true包含 false不包含
if zl.MatchString(str) {
err = errors.New("Contains characters other than letters num. ")
}
return
}
//参数:英文数字
func ValidateNum(str string) (err error) {
zl := regexp.MustCompile("[^0-9]+") //是否包含之外的字符,true包含 false不包含
if zl.MatchString(str) {
err = errors.New("Contains characters other than num. ")
}
return
}
Go语言的正则验证常用方法笔记
最新推荐文章于 2024-03-31 03:06:47 发布