问题
I need help creating a password regex. A password must contain at least 4 characters, letters (uppercase and lowercase), numbers and special characters - no spaces.
msn like regular expression.
回答1:
This regex works - see test data and output below:
^(?=.{4,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.* )(?=.*[@#$%^&+=i.,!?:;*/])
Test data in passwords.txt (only the first should pass):
aB#1
aB #1
ab#1
AB#1
aB#a
aB1a
aB1
mac-osx> grep -P '^(?=.{4,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.* )(?=.*[@#$%^&+=i.,!?:;*/])' passwords.txt
aB#1
You can add whatever extra "special characters" you need into the last look ahead regex's character class.
回答2:
Use this:
(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[#&*%])^\S*$
If letter may be any Unicode letter, you can use this regex:
(?=.*?\p{Ll})(?=.*?\p{Lu})(?=.*?\d)(?=.*?[#&*%])^\S*$
To add special characters, simply put them inside []
回答3:
try that
^.*(?=.{4,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$
来源:https://stackoverflow.com/questions/6687894/regular-expression-for-password