evilmonkey2148
asked on
RegEx Password Validation
I am looking for help building a regular expression for testing password complexity. The password requirements are:
- one upper case
- one lower case
- one special character or number
- at least 8 characters
- one upper case
- one lower case
- one special character or number
- at least 8 characters
What text editor, programming language, or other miscellaneous utility are you using for password validation?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Since \W means spaces too, I would use
(?=.*[A-Z])(?=.*[a-z])(?=. *[0-9~!@#$ %^&*]).{8, }
HTH,
Dan
(?=.*[A-Z])(?=.*[a-z])(?=.
HTH,
Dan
Without start and end of string placeholders, this validation may be vulnerable to failure. Details given here: https://www.experts-exchange.com/questions/28411422/VBScript-Regex.html?anchorAnswerId=39997831#a39997831
Terry,
I initially thought that too, but on further examination it shouldn't. Because the requirement only says, "at least 8 characters," the pattern holds. If it instead said, "between 8 and 15 characters," for example, then further restriction would be needed.
I initially thought that too, but on further examination it shouldn't. Because the requirement only says, "at least 8 characters," the pattern holds. If it instead said, "between 8 and 15 characters," for example, then further restriction would be needed.
Ah, yes, good point! :-)
ASKER
problem with this expression:
(?=.*[A-Z])(?=.*[a-z])(?=. *[0-9~!@#$ %^&*]).{8, }
is that i need to accept any special character on the keyboard.
(?=.*[A-Z])(?=.*[a-z])(?=.
is that i need to accept any special character on the keyboard.
Considering you use a non-Unicode variant, \W means "anything that is not a letter A to Z, a to z, a number 0 to 9 or an underscore _".
This makes _ to not be allowed as a special character, while it will accept space, tab, carriage returns, bell, etc.
It's better, IMO to specify exactly what is a "special character". \W is faster to write/read, but that's where its merits stop.
If you want to "accept any special character on the keyboard", you need to list them.
This makes _ to not be allowed as a special character, while it will accept space, tab, carriage returns, bell, etc.
It's better, IMO to specify exactly what is a "special character". \W is faster to write/read, but that's where its merits stop.
If you want to "accept any special character on the keyboard", you need to list them.
ASKER
(?=.*[A-Z])(?=.*[a-z])(?=. *[0-9!@#\$ %\^&\*\(\) _\+-=\[\]{ }\\\|;':", \./<>\?).{ 8,}
So that should work?
So that should work?
Yup.