要求: 密码中允许出现数字、大写字母、小写字母、特殊字符(.@$!%*#_~?&^),但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可)

package mainimport ("fmt""regexp"
)// 密码校验规则: 必须包含数字、大写字母、小写字母、特殊字符(如.@$!%*#_~?&^)至少3种的组合且长度在8-16之间
func VerifyPassword(minLength, maxLength int, pwd string) bool {if len(pwd) < minLength || len(pwd) > maxLength {return false}// 过滤掉这四类字符以外的密码串,直接判断不合法re, err := regexp.Compile(`^[a-zA-Z0-9.@$!%*#_~?&^]{8,16}$`)if err != nil {return false}match := re.MatchString(pwd)if !match {return false}var level = 0patternList := []string{`[0-9]+`, `[a-z]+`, `[A-Z]+`, `[.@$!%*#_~?&^]+`}for _, pattern := range patternList {match, _ := regexp.MatchString(pattern, pwd)if match {level++}}if level < 3 {return false}return true
}