Revision cc250b85-dbb4-4559-8c51-a8ebdf84d50a - Code Review Stack Exchange

I'm trying to write regex to validate the password for the given rule.

Passwords must be at least 8 characters in length and **contain at least 3 of the following 4 types of characters:**

 - lower case letters (i.e. a-z)
 - upper case letters (i.e. A-Z)
 - numbers (i.e. 0-9)
 - special characters (e.g. !@#$&*)

I was going through [this][1] discussion and found [this][2] really great answer over there.

Now I'm trying to write regex for the mentioned requirements and I came up with the solution like this

 ^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,}|
 (?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,}|
 (?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,}|
 (?=.*[A-Z])(?=.*[!@#$&*])(?=.*[a-z]).{8,}|
 (?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9]).{8,}$

and it is working perfect see [rubular][3] but I want to optimize these regex and I'm not sure If there are any way to simplify this.
Any suggestion will be appreciated.


 [1]: http://stackoverflow.com/questions/5142103/regex-to-validate-password-strength
 [2]: http://stackoverflow.com/questions/5142103/regex-to-validate-password-strength#answer-5142164
 [3]: http://www.rubular.com/r/Drwq39CvTi

AltStyle によって変換されたページ (->オリジナル) /