^\S*(?=\S{8,})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$
From the fine folks over at Zorched.
^
: anchored to beginning of string\S*
: any set of characters(?=\S{8,})
: of at least length 8(?=\S*[a-z])
: containing at least one lowercase letter(?=\S*[A-Z])
: and at least one uppercase letter(?=\S*[\d])
: and at least one number$
: anchored to the end of the string
To include special characters, just add (?=\S*[\W])
, which is non-word characters.