Open In App

Categorize Password as Strong or Weak using Regex in Python

Improve
Improve
Like Article
Like
Save
Share
Report

Given a password, we have to categorize it as a strong or weak one. There are some checks that need to be met to be a strong password. For a weak password, we need to return the reason for it to be weak. Conditions to be fulfilled are:

  • Minimum 9 characters and maximum 20 characters.
  • Cannot be a newline or a space
  • There should not be three or more repeating characters in a row.
  • The same string pattern(minimum of two character length) should not be repeating.

Note: For checking the basic validations of a password, click here. Examples:

Input1 : Qggf!@ghf3
Output1 : Strong Password!

Input2 : aaabnil1gu
Output2 : Weak Password: Same character repeats three 
or more times in a row

Input3 : Geeksforgeeks
Output3 : Weak Password: Same character repeats three 
or more times in a row

Input4 : Aasd!feasnm
Output4 : Weak password: Same string pattern repetition

Input5 : 772*hdf77
Output5 : Weak password: Same string pattern repetition

Input6 : " "
Output6 : Password cannot be a newline or space!

Below is the implementation. 

Python3




# Categorizing password as Strong or
# Weak in Python using Regex
 
 
import re
 
 
# Function to categorize password
def password(v):
 
    # the password should not be a
    # newline or space
    if v == "\n" or v == " ":
        return "Password cannot be a newline or space!"
 
    # the password length should be in
    # between 9 and 20
    if 9 <= len(v) <= 20:
 
        # checks for occurrence of a character
        # three or more times in a row
        if re.search(r'(.)\1\1', v):
            return "Weak Password: Same character repeats three or more times in a row"
 
        # checks for occurrence of same string
        # pattern( minimum of two character length)
        # repeating
        if re.search(r'(..)(.*?)\1', v):
            return "Weak password: Same string pattern repetition"
 
        else:
            return "Strong Password!"
 
    else:
        return "Password length must be 9-20 characters!"
 
# Main method
def main():
 
    # Driver code
    print(password("Qggf!@ghf3"))
    print(password("Gggksforgeeks"))
    print(password("aaabnil1gu"))
    print(password("Aasd!feasn"))
    print(password("772*hd897"))
    print(password(" "))
 
 
# Driver Code
if __name__ == '__main__':
    main()


Output

Strong Password!
Weak password: Same string pattern repetition
Weak Password: Same character repeats three or more times in a row
Weak password: Same string pattern repetition
Strong Password!
Password cannot be a newline or space!

Time Complexity: O(N)  N is refers to the length of the input password string,
Auxiliary Space: O(1) 



Last Updated : 28 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads