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
 | 
						||
}
 |