This commit is contained in:
39
pkg/constant/regex.go
Normal file
39
pkg/constant/regex.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package constant
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
var (
|
||||
// Password components (Go-compatible)
|
||||
hasUpper = regexp.MustCompile(`[A-Z]`)
|
||||
hasLower = regexp.MustCompile(`[a-z]`)
|
||||
hasNumber = regexp.MustCompile(`\d`)
|
||||
hasSpecial = regexp.MustCompile(`[!@#$%^&*()_+{}|:<>?~-]`)
|
||||
|
||||
// Standard Regexes
|
||||
PHONE_NUMBER_REGEX = regexp.MustCompile(`^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$`)
|
||||
EMAIL_REGEX = regexp.MustCompile(`^[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,4}$`)
|
||||
YOUTUBE_VIDEO_ID_REGEX = regexp.MustCompile(`(?:\/|v=|\/v\/|embed\/|watch\?v=|watch\?.+&v=)([\w-]{11})`)
|
||||
BANK_INPUT = regexp.MustCompile(`[__]{2,}`)
|
||||
)
|
||||
|
||||
func ValidatePassword(password string) error {
|
||||
if len(password) < 8 {
|
||||
return errors.New("password must be at least 8 characters long")
|
||||
}
|
||||
if !hasUpper.MatchString(password) {
|
||||
return errors.New("password must contain at least one uppercase letter")
|
||||
}
|
||||
if !hasLower.MatchString(password) {
|
||||
return errors.New("password must contain at least one lowercase letter")
|
||||
}
|
||||
if !hasNumber.MatchString(password) {
|
||||
return errors.New("password must contain at least one number")
|
||||
}
|
||||
if !hasSpecial.MatchString(password) {
|
||||
return errors.New("password must contain at least one special character")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user