Проверка пароля регулярного выражения - PullRequest
0 голосов
/ 04 октября 2018

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

Требование: пароль должен содержать 16 символов.

  1. Символ 1-4 должен иметь наминимум 1 цифра.
  2. Символ 5-8 должен иметь как минимум 1 символ нижнего регистра.
  3. Символ 9-12 должен иметь как минимум 1 символ верхнего регистра.
  4. Символ 13-16 должен иметь хотя бы 1 символ (пунктуация).

Я пытался использовать регулярное выражение с положительным прогнозом, но в итоге оно не работает:

echo 'XXXX9999ccccXXX%' | grep -P '^((?=.*[0-9]).{4})((?=.*[a-z]).{4})((?=.*[A-Z]).{4})((?=.*\pP).{4})$'

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы можете использовать

^(?=.{0,3}\d).{4}(?=.{0,3}[a-z]).{4}(?=.{0,3}[A-Z]).{4}(?=.{0,3}[\W_]).{4}$

См. это демо

По сути, шаблон включает в себя четыре части шаблона, ожидающих упреждения, и так как каждый шаблон потребления соответствует 4 символамв целом соответствует строке из 16 символов (обратите внимание, что якоря ^ и $ также важны).

Подробности

  • ^ - начало строки
  • (?=.{0,3}\d) - после 0–3 символов должна быть цифра
  • .{4} - расходуются любые 4 символа
  • (?=.{0,3}[a-z]) -после 0–3 символов должна быть строчная буква
  • .{4} - используются любые 4 символа
  • (?=.{0,3}[A-Z]) - должна быть заглавная буква после 0–3 символов
  • .{4} - расходуются любые 4 символа
  • (?=.{0,3}[\W_]).{4} - после 0–3 символов должен быть специальный символ (не буквенно-цифровой)
  • $ - конецстрока
0 голосов
/ 04 октября 2018

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

^(?=.{0,3}\d)(?=.{4,7}[a-z])(?=.{8,11}[A-Z])(?=.{12,15}[.,$%^&!@]).{16}$

Объяснение:

(?=.{0,3}\d)           - number in positions 1-4
(?=.{4,7}[a-z])        - lowercase in positions 5-8
(?=.{8,11}[A-Z])       - uppercase in positions 9-12
(?=.{12,15}[.,$%^&!@]) - symbol in positions 13-16

Демо

Iне знаю grep или Linux достаточно хорошо, чтобы прокомментировать, используете ли вы его наилучшим образом, но это должно по крайней мере исправить все проблемы, которые у вас возникли с шаблоном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...