using regex for password validation

MRAB python at mrabarnett.plus.com
Wed Dec 23 14:03:50 EST 2020


On 2020-12-23 17:03, Sadaka Technology wrote:
> hello guys,
> 
> I have this pattern for password validation (regex):
> 
> I want these rules to be applied:
> 
> Minimum 8 characters.
> The alphabets must be between [a-z]
> At least one alphabet should be of Upper Case [A-Z]
> At least 1 number or digit between [0-9].
> At least 1 character from [ _ or @ or $ ].
> 
> and this pattern:
> 
> passwordpattern = "^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[@$])[A-Za-z\d@$!%?&]{8,}.$"
> 
> my only issue is that I want to add the symbol () and symbol(.) in the pattern where only it accepts $ and @, I tried adding generally like [@_$] not working
> 
Your pattern:

^		        Matches at start of string
(?=.[a-z])	        Matches any character and then one [a-z]
(?=.[A-Z])	        Matches any character and then one [A-Z]
(?=.\d)		        Matches any character and then one digit
(?=.[@$])	        Matches any character and then one of [@$]
[A-Za-z\d@$!%?&]{8,}	Matches 8 or more of [A-Za-z\d@$!%?&]{8,}
.			Matches any character
$			Matche at end of string

The pattern will never match because the second character cannot be one 
of [a-z] _and_ one of [A-Z] _and_ a digit _and_ one of [@$] _at the same 
time_.

I'm not sure what you mean by "The alphabets must be between [a-z]" (all 
letters lower case?) and also "At least one alphabet should be of Upper 
Case [A-Z]" (at least one upper case letter).

I'm guessing you mean that all letters must be [A-Za-z], but at least 
one of them must be [A-Z].

Also, what do you mean by "symbol () and symbol(.)"; I see the "." 
between the second parentheses in the second one, but nothing between 
the first.

Anyway, how about this pattern:

^(?=.*[A-Z])(?=.*[0-9])(?=.*[_@$])[A-Za-z0-9@$_!%?&]{8,}$



More information about the Python-list mailing list