import (
"errors"
"regexp"
)
var (
upperCaseRegex = `(.*[A-Z].*)`
lowerCaseRegex = `(.*[a-z].*)`
numbersRegex = `(.*\d.*)`
emailPattern = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)" +
"*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])" +
"*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[" +
"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.)" +
"{3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:" +
"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\\])"
ErrEmailInvalid = errors.New("email is not a valid email address format")
ErrPasswordInvalid = errors.New("password does not comply to the password policy")
)
func Password(passw string) bool {
pw := []byte(passw)
if len(passw) > 100 || len(passw) < 8 {
return false
}
_, err := regexp.Match(upperCaseRegex, pw)
if err != nil {
return false
}
_, err = regexp.Match(lowerCaseRegex, pw)
if err != nil {
return false
}
_, err = regexp.Match(numbersRegex, pw)
if err != nil {
return false
}
return true
}
func IsEmail(email string) bool {
match, err := regexp.Match(emailPattern, []byte(email))
if err != nil {
return false
}
return match
}