Регулярное выражение, что позволяет специальные символы? - PullRequest
2 голосов
/ 21 июля 2009

Приведенное ниже регулярное выражение требует, чтобы пароль имел 1 цифру, 1 символ (верхний или нижний) и имел длину не менее 8. Но если я наберу специальный символ, он возвращает false. Я не хочу требовать специального символа, но хочу разрешить его в этом контексте. Как я могу изменить это регулярное выражение, чтобы разрешить специальный символ?

Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z])\w{8,}$")

Ответы [ 4 ]

6 голосов
/ 21 июля 2009

Изменение "\ w" на "." должен сделать это:

Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z]).{8,}$")

\ w соответствует символам «word», которые обычно не соответствуют специальным символам (в зависимости от того, как вы определяете «special» и используемый язык).
, будет соответствовать любому символу кроме новой строки

4 голосов
/ 21 июля 2009

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

if (Regex.IsMatch(Password, "\d") &&
    Regex.IsMatch(Password, "\w") &&
    Password.length >= 8) //psuedo-code

Это не будет ограничивать символы. Он проверяет, что пароль имеет хотя бы один символ слова, хотя бы одно число и имеет длину не менее 8 символов.

4 голосов
/ 21 июля 2009
Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z]).{8,}$")
3 голосов
/ 21 июля 2009

Торан, если вы не хотите разрешать пробелы в своем пароле, используйте следующее:

Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z]\S{8,}$")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...