Password validation in Python

Let’s take a password as a combination of alphanumeric characters along with special characters, and check whether the password is valid or not with the help of few conditions.

Conditions for a valid password are:

  1. Should have at least one number.
  2. Should have at least one uppercase and one lowercase character.
  3. Should have at least one special symbol.
  4. Should be between 6 to 20 characters long.
Input :  Geek12#
Output : Password is valid.

Input :  asd123
Output : Invalid Password !!

We can check if a given string is eligible to be a password or not using multiple ways.



Method #1: Naive Method (Without using Regex).

filter_none

edit
close

play_arrow

link
brightness_4
code

# Password validation in Python
# using naive method
  
# Function to validate the password
def password_check(passwd):
      
    SpecialSym =['$', '@', '#', '%']
    val = True
      
    if len(passwd) < 6:
        print('length should be at least 6')
        val = False
          
    if len(passwd) > 20:
        print('length should be not be greater than 8')
        val = False
          
    if not any(char.isdigit() for char in passwd):
        print('Password should have at least one numeral')
        val = False
          
    if not any(char.isupper() for char in passwd):
        print('Password should have at least one uppercase letter')
        val = False
          
    if not any(char.islower() for char in passwd):
        print('Password should have at least one lowercase letter')
        val = False
          
    if not any(char in SpecialSym for char in passwd):
        print('Password should have at least one of the symbols $@#')
        val = False
    if val:
        return val
  
# Main method
def main():
    passwd = 'Geek12@'
      
    if (password_check(passwd)):
        print("Password is valid")
    else:
        print("Invalid Password !!")
          
# Driver Code        
if __name__ == '__main__':
    main()

chevron_right


Output:

Password is valid

This code used boolean functions to check if all the conditions were satisfied or not. We see that though the complexity of the code is basic, the length is considerable.
 
Method #2: Using regex

compile() method of Regex module makes a Regex object, making it possible to execute regex functions onto the pat variable. Then we check if the pattern defined by pat is followed by the input string passwd. If so, the search method returns true, which would allow the password to be valid.

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing re library
import re
  
def main():
    passwd = 'Geek12@'
    reg = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{6,20}$"
      
    # compiling regex
    pat = re.compile(reg)
      
    # searching regex                 
    mat = re.search(pat, passwd)
      
    # validating conditions
    if mat:
        print("Password is valid.")
    else:
        print("Password invalid !!")
  
# Driver Code     
if __name__ == '__main__':
    main()

chevron_right


Output:

Password is valid.


My Personal Notes arrow_drop_up

Front and Back End Web Developer Android Developer Python and C++ Coder Networking Geek

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.