113 lines
3.3 KiB
Go
113 lines
3.3 KiB
Go
|
|
package utility
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"regexp"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
var (
|
|||
|
|
emailRegexp, _ = regexp.Compile("(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$)")
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// ValidateEmail 验证邮箱
|
|||
|
|
func ValidateEmail(email string) bool {
|
|||
|
|
// userName := "[a-zA-Z0-9][a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]{0,62}[a-zA-Z0-9]"
|
|||
|
|
// domainName := "[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?"
|
|||
|
|
// topLevelDomainName := "(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*"
|
|||
|
|
// pattern := "^" + userName + "@" + domainName + topLevelDomainName + "$"
|
|||
|
|
// reg := regexp.MustCompile(pattern)
|
|||
|
|
// match := reg.MatchString(email)
|
|||
|
|
match := emailRegexp.MatchString(email)
|
|||
|
|
return match
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ValidatePhoneNumber 手机号码验证,+91-9819882936
|
|||
|
|
//
|
|||
|
|
// 1. Mobile Number
|
|||
|
|
// - Starts with 6,7,8,8
|
|||
|
|
// - 10 digit
|
|||
|
|
// - Prexix can be +91, 0
|
|||
|
|
//
|
|||
|
|
// 2. LandLine Number
|
|||
|
|
// - {area-code}-{local number}
|
|||
|
|
// - 10 digit number
|
|||
|
|
// - area codes range from 2-digits to 4-digits
|
|||
|
|
// - ex. 02321-238200
|
|||
|
|
func ValidatePhoneNumber(num string) bool {
|
|||
|
|
prefixMobileNum := `(?:(?:\+|0{0,2})91([\s-])?|[0]?)?`
|
|||
|
|
mobileNum := `[6-9]\d{9}`
|
|||
|
|
landLineNum := `((0)?(([1-9]\d{1}-\d{8})|([1-9]\d{2}-\d{7})|([1-9]\d{3}-\d{6})))`
|
|||
|
|
pattern := "^(" + "(" + prefixMobileNum + mobileNum + ")" + "|" + landLineNum + ")$"
|
|||
|
|
reg := regexp.MustCompile(pattern)
|
|||
|
|
match := reg.MatchString(num)
|
|||
|
|
|
|||
|
|
return match
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ValidatePhoneForeign 外国手机
|
|||
|
|
func ValidatePhoneForeign(phone string) bool {
|
|||
|
|
reg, err := regexp.MatchString("^[0-9]{7}$", phone)
|
|||
|
|
if err != nil {
|
|||
|
|
return false
|
|||
|
|
}
|
|||
|
|
return reg
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// IsMobileChina 中国手机验证
|
|||
|
|
func IsMobileChina(phone string) bool {
|
|||
|
|
// reg, err := regexp.MatchString("^[0-9]{11}$", phone)
|
|||
|
|
reg, err := regexp.MatchString("^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9]|19[0-9])\\d{8}$", phone)
|
|||
|
|
if err != nil {
|
|||
|
|
return false
|
|||
|
|
}
|
|||
|
|
return reg
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ReturnEmail 替换邮箱中间几位为*号
|
|||
|
|
func ReturnEmail(email string) string {
|
|||
|
|
if len(email) == 0 {
|
|||
|
|
return ""
|
|||
|
|
}
|
|||
|
|
re, _ := regexp.Compile("(\\w?)(\\w+)(\\w)(@\\w+\\.[a-z]+(\\.[a-z]+)?)")
|
|||
|
|
return re.ReplaceAllString(email, "$1****$3$4")
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ReturnPhoneNO 替换手机号中间四位为*
|
|||
|
|
func ReturnPhoneNO(phone string) string {
|
|||
|
|
if len(phone) == 0 {
|
|||
|
|
return ""
|
|||
|
|
}
|
|||
|
|
re, _ := regexp.Compile("(\\d{3})(\\d{4})(\\d{4})")
|
|||
|
|
return re.ReplaceAllString(phone, "$1****$3")
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// CheckPasswordOk
|
|||
|
|
// 密码长度minLength-maxLength位,可使用字母、数字、符号组成,区分大小写,至少包含两种
|
|||
|
|
// minLength: 指定密码的最小长度
|
|||
|
|
// maxLength:指定密码的最大长度
|
|||
|
|
// pwd:明文密码
|
|||
|
|
func CheckPasswordOk(minLength, maxLength int, pwd string) bool {
|
|||
|
|
if len(pwd) < minLength {
|
|||
|
|
return false // fmt.Errorf("BAD PASSWORD: The password is shorter than %d characters", minLength)
|
|||
|
|
}
|
|||
|
|
if len(pwd) > maxLength {
|
|||
|
|
return false // fmt.Errorf("BAD PASSWORD: The password is logner than %d characters", maxLength)
|
|||
|
|
}
|
|||
|
|
// patternList := []string{`[0-9]+`, `[a-z]+`, `[A-Z]+`, `[~!@#$%^&*?_-]+`}
|
|||
|
|
isNum, _ := regexp.MatchString(`[0-9]+`, pwd)
|
|||
|
|
isLower, _ := regexp.MatchString(`[a-z]+`, pwd)
|
|||
|
|
isUpper, _ := regexp.MatchString(`[A-Z]+`, pwd)
|
|||
|
|
//isSpe, _ := regexp.MatchString(`[~!@#$%^&*?_-]+`, pwd)
|
|||
|
|
|
|||
|
|
return isNum && isLower && isUpper
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// IsAccountTwo 用户账号验证
|
|||
|
|
func IsAccountTwo(phone string) bool {
|
|||
|
|
// reg, err := regexp.MatchString("^[0-9]{11}$", phone)
|
|||
|
|
reg, err := regexp.MatchString("^[A-Za-z\\d]{6,12}$", phone)
|
|||
|
|
if err != nil {
|
|||
|
|
return false
|
|||
|
|
}
|
|||
|
|
return reg
|
|||
|
|
}
|