Я попытался написать регулярное выражение для проверки паролей, но он возвращает false для действительных паролей.
Пароли должны иметь как минимум 3 из следующих:
Ограничений на длину пароля нет.
Это моя попытка:
@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3})$"
Кроме того, я полностью понимаю, как это сделать, не используя регулярные выражения. Однако это для университетской задачи, и нам сказали, что мы должны их использовать.
Я думаю, что ваша единственная проблема в том, что вы не соответствуете символам.
@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3})$"
состоит только из ваших взглядов, которые обеспечивают ваши условия. Это означает, что в основном вы нуждаетесь в условиях с lookaheads, а с другой стороны, реальный паттерн только ^$
соответствует пустой строке. Это регулярное выражение никогда не вернется.
Просто добавьте .*
В конце, чтобы на самом деле совместить символы. Ваши требования покрываются взглядами.
@"^(?=(.*\d){3})(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*[^a-zA-Z\d]){3}).*$"
gh6y78GH#^%
подтвердит это, несмотря на наличие только двух заглавных букв, как иskfhsifcns,edche#£$444