Регулярное выражение для проверки, содержит ли данный пароль хотя бы одну цифру и одну букву в c # - PullRequest
13 голосов
/ 22 августа 2009

Может ли кто-нибудь помочь мне написать регулярное выражение для проверки, содержит ли пароль хотя бы одну букву и одно число?

У меня есть требование, чтобы пароли пользователей были буквенно-цифровыми, и я хочу иметь возможность проверить это с помощью регулярного выражения.

Ответы [ 3 ]

21 голосов
/ 23 августа 2009

Позитивный взгляд - это то, что вы ищете. Регулярное выражение выглядит так:

(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+

Здесь (?=.*[A-Za-z]) - это положительный прогноз, который утверждает, что ваша строка имеет значение как минимум один символ , а (?=.*[0-9]) утверждает, что она имеет как минимум одну цифру Важно отметить, что позитивный прогноз не возвращает совпадение, а скорее утверждает, существует ли совпадение или нет. Итак, вы должны прочитать предыдущее регулярное выражение как «утверждать, что в нем есть хотя бы один символ; утверждать, что в нем есть хотя бы одна цифра; теперь, когда мы знаем, что утверждения прошли, просто проверьте буквенно-цифровые символы».

Это очень интересно, потому что позволяет легко комбинировать требования проверки вашего приложения, не делая ваше регулярное выражение очень сложным. Например, если вам требуется, чтобы строка имела в точности 20 символов, вам просто нужно добавить новое положительное утверждение, например:

(?=[A-Za-z0-9]{20})(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+

Надеюсь, это поможет!

7 голосов
/ 22 августа 2009

Если вы хотите использовать это в одном регулярном выражении, вы можете использовать "[a-zA-Z].*\\d|\\d.*[a-zA-Z]", хотя две отдельные проверки могут быть более читабельными.

Редактировать: подход с двумя проверками, который я считаю вполне читабельным, может выглядеть следующим образом:

Regex.IsMatch(password, "\\d") && Regex.IsMatch(password, "[a-zA-Z]")
2 голосов
/ 22 августа 2009
bool isValid = Regex.IsMatch(password, @"[a-zA-Z]") &&
               Regex.IsMatch(password, @"\d");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...