Я создаю супер простую функцию, чтобы пароль содержал определенные символы.А именно, пароль должен иметь следующее значение:
- Одна строчная буква
- Одна заглавная буква
- Одна цифра
- Один специальный символ
- Нет пробелов,
#
или |
Я думал, что регулярное выражение будет самым простым способом сделать это.Но мне трудно понять, как это сделать на Голанге.В настоящее время у меня есть несколько отдельных функций регулярного выражения MatchString
, которые я буду комбинировать для получения желаемой функциональности.Например:
lowercaseMatch := regexp.MustCompile(`[a-z]`).MatchString
uppercaseMatch := regexp.MustCompile(`[A-Z]`).MatchString
digitMatch := regexp.MustCompile(`\d`).MatchString
specialMatch := regexp.MustCompile(`\W`).MatchString
badCharsMatch := regexp.MustCompile(`[\s#|]`).MatchString
if (lowercaseMatch(pwd)
&& uppercaseMatch(pwd)
&& digitMatch(pwd)
&& specialMatch(pwd)
&& !badCharsMatch(pwd)) {
/* password OK */
} else {
/* password BAD */
}
Хотя это делает вещи довольно читабельными, я бы предпочел более краткое регулярное выражение, но я не знаю, как получить регулярное выражение для поиска одного символа в каждой из указанных выше категорий (независимо от должности).Может ли кто-нибудь указать мне правильное направление, как этого добиться?Кроме того, если есть лучший способ сделать это, чем регулярное выражение, я все уши.
Спасибо!