如何在正则表达式中使用变量

时间:2019-06-26 16:35:32

标签: python regex

我正在尝试编写一个检查强密码的函数。密码必须包含一个大写字母,一个小写字母和一个数字,并且必须包含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 个答案:

答案 0 :(得分:1)

扩展here的答案:

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

签出this demo

使用前瞻性,我们确保每个组中至少有一个字符,然后总共需要至少8个字符。请注意,您可以通过更改最后一组{8,}

来自定义允许的字符(如果要允许符号)

答案 1 :(得分:0)

根据@ 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()