29 lines
507 B
Go
29 lines
507 B
Go
package validators
|
|
|
|
import (
|
|
regexp "github.com/wasilibs/go-re2"
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
)
|
|
|
|
func regPassword(v *XValidator) {
|
|
v.validator.RegisterValidation("password", func(fl validator.FieldLevel) bool {
|
|
tests := []string{
|
|
`[a-z]`,
|
|
`[A-Z]`,
|
|
`[\d]`,
|
|
`[@$!%*?&]`,
|
|
`[A-Za-z\d@$!%*?&]`,
|
|
`.{8,}`,
|
|
}
|
|
password := fl.Field().String()
|
|
for _, test := range tests {
|
|
t, _ := regexp.MatchString(test, password)
|
|
if !t {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
})
|
|
}
|