как использовать переменные в Regex - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь написать функцию, которая проверяет надежный пароль. Пароль должен содержать одну заглавную букву, одну строчную букву, число и содержать не более 8 символов.

import re

def checker():

 while True:
   userInput = input(' Please input a password ')
   passwordRegex = re.compile(r'[a-zA-Z0-9]+ {,8}')
   match = passwordRegex.search(userInput)
   if match:
        print('Good!')
   else:
        print('Bad!')

checker()

Эта функция всегда выводит Bad, даже если пароль соответствует всем требованиям. У меня есть ощущение, что ошибка связана с тем, как я использую свои регулярные выражения и переменные. Я использую Python 3.6.

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Расширяя ответ от здесь :

passwordRegex = re.compile("^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\S{8,}")

проверить это демо

Используя заглядывания, мы по крайней мере, что естьпо одному символу от каждой группы, затем требуется не менее 8 символов.Обратите внимание, что вы можете настроить разрешенные символы (если вы хотите разрешить символы), изменив последнюю группу, предшествующую {8,}

0 голосов
/ 27 июня 2019

Основываясь на отзывах @Aran-Fey и @Tomerikoo, я обновил свой код, и теперь он работает.

import re

def checker():

    while True:

    userInput = input(' Please input a password ')

    passwordRegex = re.search(r'^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$',userInput)

    if passwordRegex:

        break

     print('Good!')


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