package main
import (
"fmt"
"unicode"
)
func validPassword(s string) error {
next:
for name, classes := range map[string][]*unicode.RangeTable{
"upper case": {unicode.Upper, unicode.Title},
"lower case": {unicode.Lower},
"numeric": {unicode.Number, unicode.Digit},
"special": {unicode.Space, unicode.Symbol, unicode.Punct, unicode.Mark},
} {
for _, r := range s {
if unicode.IsOneOf(classes, r) {
continue next
}
}
return fmt.Errorf("password must have at least one %s character", name)
}
return nil
}
func main() {
for _, s := range []string{
"bad",
"testPassword",
"testPa##word",
"b3tterPa$$w0rd",
} {
fmt.Printf("validPassword(%q) = %v\n", s, validPassword(s))
}
}
Last active
November 14, 2023 03:25
-
-
Save fearblackcat/d0199d6a47d60b067a4d4be173b0ef97 to your computer and use it in GitHub Desktop.
password check in golang
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment