2017-08-15 146 views
-2

如何验证输入以检查它是否至少包含1个数字,一个大写字母和一个小写字母。我看过类似的问题,他们似乎并不完全是我需要的东西,例如只检查数字和拒绝信件,除了一个以上的数字,大写字母和小写字母外,我需要它。密码验证 - 至少一个大写,一个小写字母和一个数字

+2

https://stackoverflow.com/questions/7684815/regex-for-alphanumeric-with-at至少1个数字和1个字符 – user2341726

+3

到目前为止您尝试了什么?请展示一些努力。 – Moberg

+0

https://stackoverflow.com/questions/41117733/validation-a-password-python重复? –

回答

0

您可以使用assertany()string结合内置模块是这样的:

import string 

password = '1Aa' 

try: 
    assert any(i in string.ascii_lowercase for i in password) 
    assert any(i in string.ascii_uppercase for i in password) 
    assert any(i in string.digits for i in password) 
except AssertionError as e: 
    raise Exception('Invalid password!') 
0
import re 
def passwordagain(): 
password() 

def password(): 
     print() 
     password = input("Enter a secure password: ") 
     if re.search('[A-Z]',password) is None: 
      print("Password must contain at least one capital letter and one number.") 
      passwordagain() 
     elif re.search('[0-9]',password) is None: 
      print("Password must contain at least one capital letter and one number.") 
      passwordagain() 
     elif re.search('[a-z]',password) is None: 
      print("Password must contain at least one capital letter and one number.") 
      passwordagain()   
     else: 
      filename = ("password."); 
      with open (filename, "w") as f: 
       f.write (password) 
      print() 
      print("Password saved") 
+0

'passwordagain()'是什么? – asongtoruin

+0

对不起,错过了,它只是一种方式来循环功能 – user8435959

+0

这不是一个非常明智的方式来启动无限循环。你应该考虑使用'while True:' - [这个问题和答案](https://stackoverflow.com/questions/3754620/a-basic-question-about-while-true)可能会有帮助 – asongtoruin

相关问题