Exercício de RegEx #5: Validação de senhas

Escreva três expressões regulares que serão passadas para re.match() para testar a força de uma senha:

  • Uma chamada invalid que corresponda a uma senha se ela tiver menos de 6 caracteres ou mais de 30 caracteres, se contiver qualquer caractere não permitido ou se não contiver pelo menos um caractere de cada categoria.
  • Uma chamada weak que corresponda a uma senha válida que ou tenha entre 6 e 15 caracteres ou contenha menos de três caracteres de cada categoria.
  • Uma chamada strong que corresponda a uma senha válida de entre 16 e 30 caracteres e que contenha pelo menos três caracteres de cada categoria.

Categorias

  • Minúsculas: todas as letras minúsculas de "a" a "z".
  • Maiúsculas: todas as letras maiúsculas de "A" a "Z".
  • Números: todos os dígitos de 0 a 9.
  • Símbolos: todos os símbolos a seguir !"#$%&'()*+,-./:;<=>?@[\]^_\{|}

Caracteres não permitidos

Espaços, tabulações, quebras de linha e qualquer outro caractere que não pertença a uma das quatro categorias.

Exemplo

# There are four invalid, four weak and four strong passwords (in that order).

passwords = [
    r'a3%Z',
    r'qwerty123456666666666666666666',
    r'sjfajfewjrjiodjfsrw0998(*(8q9432-4dfjsoijfj3))',
    r'this is an   invalid password',
    r'3d/-\b1T',
    r'This1s4VeryVeryl0n6Pa$$word',
    r'AAaa11&&',
    r'yFtZaqR%eN3nsu8VvxqK!LDfxbCnj',
    r'S*=7v!7rM5k!H+)@',
    r'H#4qq2_j[T|R!(7:;.aT',
    r'AP6&Ju~=ec<?"zj#8frDq=\3{%^P$',
    r"1111aaaaA^AA;;;1111aaaaAAAA;;'"
]

invalid = "yourregularexpressionhere"
weak = "yourregularexpressionhere"
strong = "yourregularexpressionhere"

[bool(re.match(invalid, i)) for i in passwords] ➞ [True, True, True, True, False, False, False, False, False, False, False, False]
[bool(re.match(weak, i)) for i in passwords] ➞ [False, False, False, False, True, True, True, True, False, False, False, False]
[bool(re.match(strong, i)) for i in passwords] ➞ [False, False, False, False, False, False, False, False, True, True, True, True]

Notas

  • Você não precisa escrever uma função, apenas o padrão.
  • Não remova import re do código.
  • Encontre mais informações sobre RegEx em Recursos.
  • Você pode encontrar todos os desafios desta série aqui.