要求: 密码中允许出现数字、大写字母、小写字母、特殊字符(.@$!%*#_~?&^),但至少包含其中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
}