Использование регулярных выражений и |оператор - PullRequest
0 голосов
/ 11 мая 2018

Поэтому я использую Regex для создания формы смены пароля. Некоторые текстовые обновления на «слабый», «средний», «сильный» и «идеальный» основаны на надежности паролей. Мне удалось создать строку регулярного выражения, которая проверяет все активные символы, как вы видите в этой строке, которую я затем сравнил бы с новой строкой пароля ...

Regex rgxAll = new Regex(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$");

Хотя сейчас я пытаюсь создать строку, которая проверяет: «Содержит ли новый пароль строчные буквы И прописные буквы ИЛИ специальные символы ИЛИ цифры». Чтобы упростить его до терминов кодирования ...

NewPass.IsMatch(lowercaseLetter &&(uppercaseLetter || specialChar || number);

Так что да, я хочу создать регулярное выражение, которое я могу использовать для проверки IsMatch. Я пытался смотреть онлайн, но синтаксис регулярных выражений сбивает меня с толку.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Я бы использовал одно выражение соответствия для каждого символьного класса, а затем использовал бы стандартные логические выражения для их объединения:

var upper   = Regex.IsMatch(password, @".*[A-Z].*");
var lower   = Regex.IsMatch(password, @".*[a-z].*");
var digit   = Regex.IsMatch(password, @".*\d.*");
var special = Regex.IsMatch(password, @".*[\W_].*");

var passwordAccepted = lower && (upper || special || digit);

Что также позволяет вам дать обратную связь с пользователем почему егопароль был отклонен:

if(!digit)
{
    Console.Writeline("password must contain a number!")
}
...
0 голосов
/ 11 мая 2018

Вы можете использовать следующее:

^(?=.*[a-z])(?=.*[A-Z\W\d_])

Exp:

  • (?=.*[a-z]): заглавная буква
  • (?=.*[A-Z\W\d_]): поиск заглавных букв || specialChar || номер
...