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