Regex is one of powerful tool for pattern matching
today we are going to solve one of the regex problem for password matching
Question:
- The password must contain atleast one special character among # ! _ $ @
- The password must contain atleast two numbers
- The password must contain atleast one upper case alphabet and one lower case alphabet.
- The password must have a minimum length of 8.
- The password must have a maximum length of 25.
Example Input/Output:
Example 1:
Input:
kiC_3b0x3r
Output:
VALID
Example 2:
Input:
m@d31nindia
Output:
INVALID
Explanation:
No alphabet in uppercase.
Example 3:
Input:
M1kT!s0
Output:
INVALID
Explanation:
Minimum length must be 8
Answer:
^(?=(?:[^a-z]*[a-z]){1})(?=(?:[^A-Z]*[A-Z]){1})(?=(?:[^0-9]*[0-9]){2})(?=(?:[^#!_$@]*[#!_$@]*){1}).{8,25}$
Explanation:
^(?=(?:[^a-z]*[a-z]){1}) check for atleast one a-z
(?=(?:[^A-Z]*[A-Z]){1}) check for atleast one a-z
(?=(?:[^0-9]*[0-9]){2}) check for atleast two numbers
(?=(?:[^#!_$@]*[#!_$@]*){1}).{8,25}$ check for atleast one special characters
{8,25} => minimum length is 8 and maximum length is 25
we have 1st,2nd,3rd,4th,.............
That will match numbers in the form 1, 2, 3... or in the form 1st, 2nd, 3rd,... but
it will only capture the numeric part.
?= -> lookheads there is good source to learn it easy try below link
Lookahead
{} -> No of occurance
Resources:
http://www.regular-expressions.info/lookaround.html
https://stackoverflow.com/questions/2973436/regex-lookahead-lookbehind-and-atomic-groups
https://regex101.com/library/fR8728
any doubts drop in the comments
today we are going to solve one of the regex problem for password matching
Question:
- The password must contain atleast one special character among # ! _ $ @
- The password must contain atleast two numbers
- The password must contain atleast one upper case alphabet and one lower case alphabet.
- The password must have a minimum length of 8.
- The password must have a maximum length of 25.
Example Input/Output:
Example 1:
Input:
kiC_3b0x3r
Output:
VALID
Example 2:
Input:
m@d31nindia
Output:
INVALID
Explanation:
No alphabet in uppercase.
Example 3:
Input:
M1kT!s0
Output:
INVALID
Explanation:
Minimum length must be 8
Answer:
^(?=(?:[^a-z]*[a-z]){1})(?=(?:[^A-Z]*[A-Z]){1})(?=(?:[^0-9]*[0-9]){2})(?=(?:[^#!_$@]*[#!_$@]*){1}).{8,25}$
Explanation:
^(?=(?:[^a-z]*[a-z]){1}) check for atleast one a-z
(?=(?:[^A-Z]*[A-Z]){1}) check for atleast one a-z
(?=(?:[^0-9]*[0-9]){2}) check for atleast two numbers
(?=(?:[^#!_$@]*[#!_$@]*){1}).{8,25}$ check for atleast one special characters
{8,25} => minimum length is 8 and maximum length is 25
Things which are confusing are
?: -> is called non-capturing group which is bit confusing lets understand using a example
([0-9]+)(?:st|nd|rd|th)?
we have 1st,2nd,3rd,4th,.............That will match numbers in the form 1, 2, 3... or in the form 1st, 2nd, 3rd,... but
it will only capture the numeric part.
?= -> lookheads there is good source to learn it easy try below link
Lookahead
{} -> No of occurance
Resources:
http://www.regular-expressions.info/lookaround.html
https://stackoverflow.com/questions/2973436/regex-lookahead-lookbehind-and-atomic-groups
https://regex101.com/library/fR8728
any doubts drop in the comments
Comments
Post a Comment