Regex для стандартного пароля ASP.NET Core Identity

Примечание. Этот вопрос, я считаю, не является дубликатом этого вопроса. Мой вопрос связан с правилами проверки по умолчанию. Идентификатор ядра asp.net имеет для проверки пароля и того, как это можно сделать, в то время как связанный вопрос обсуждает в целом о действии проверки пароля (что не решает мою проблему)

Ядро ASP.NET позволяет по умолчанию проверять пароль

  1. Минимум 8 символов
  2. Должно иметь хотя бы одно число
  3. Должен иметь хотя бы один верхний регистр
  4. Должен иметь хотя бы один нижний регистр
  5. Должен иметь хотя бы один специальный символ (какие специальные символы разрешены?)

Помня об этих условиях, я попытался сделать следующее регулярное выражение, но оно не работает.

^((?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9])).{8,}$

Это регулярное выражение принимает строки, даже если выполняется одно из трех условий из точек 2,3,4,5. Но я хочу, чтобы все условия удовлетворяли.

Что я здесь делаю неправильно?

Ответ 1

так что используйте

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$^+=!*()@%&]).{8,}$
  • ^: первая строка
  • (? =. * [a-z]): должен содержать хотя бы одну строчную букву
  • (? =. * [A-Z]): должен иметь хотя бы один верхний регистр
  • (? =. *\d): должен быть хотя бы один номер
  • (? =. * [# $ ^ + =! *() @% & amp;]): должен содержать хотя бы один специальный символ
  • . {8,}: минимум 8 символов
  • $: конец строки

для получения дополнительной информации: это