$re = '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[\w!@#$%]{6,}$/m';
$str = 'INVALID:
abcdefg
abc
abcdefghji
abCDEFghij
1234efghij
abcde6789
ab!67fghij
ab)=
VALID:
8vB0k3XiLp
VvsfM5he#X
d10STfJ$gA
R1cIX7mn8T
6EDNTbda%z
IKkED0#zYS
1S#9duFcHe
KP1fN3jTwJ
iRS1YB@nfI
Vp1yRxwuGD
fajT2ukURg
9tY8#HkojR
@LHTbA3C7J
%HLK6EqANV
#vZR6in5KJ
!WwjH3K65v
%5WOIrCv@R
emfpLRE5oD
zREw13rcJn
#NU42oxYa0
$oujwK%xR7
1YH#uOFQlV
L936DS2ynR
ab4RAVCZHv
9xwiZmDSAd
eZjPHg3B8i
OANw!p8yxH
J6efM@hxNz
qvmefZI3Wn
fH9wXGK8ZI
eHcl3qRYGS
i8we0zpOvr
1kpSFgeIKA
p8eM@FtZ9n
rj95zq!E3I
lkDKt@486w
7!j50lyxgB
%vBCxLq6Ym
@ky$u9iSGm
%QD9jA6Lm@
JolTzf7gUr
cSRe%v46Or
oJVlc#Gdn3
G!%NF0XESp
76dMFmbf%X
3JQlSRiXLj
Y$!%WCgti0
D1k$#ThiqG
M6tPY$XzQp
@gUcrWm7zA
1xc#hwGj0D
s8p#S$ZkWP
sIP3dQL#4j
bBLEnvlFI3
isSeP4AC%w
1OsdI4iCjR
@p#qm$NA9Z
guPjtIp5!i
a84ONQRZXY
homJ9T6w80
$!uh09kaUO
CTIX7vsalJ
2CASR7IUyY
Tr1jl!oKPF
2%ar6kMCZe
m4TrLJC!cD
3E#mZ!jrdn
oZIa$xmDU8
9wXxBaJAyz
0%dNQfyr$e
ez#IcxH8SX
MF$m6wile%
ilo3FURh9t
d71hgGe5Vo
KEr9u7CRtP
CfUE4Fj$Ju
aXSG5wIQor
VTk2fmDlbx
GHxBwpt0dN
mYS2Q1zFi!
qD0KiayFz4
hT9FrGQ$dS
5eKrEvnBZA
gA$fXPUd2#
Eoz8uqBART
7wKEo6jJGX
1p4Zj7Ssk2
K#MX8Q61dr
L%S2Kh7Q@r
fwD6zy$NM@
zyJPri5u7N
MyAI!j2iz%
9blWdD5!w@
iw6Ef3dBLk
JMYD1iHol2
#M1OUJ0VDi
e@78BCHLI%
oeD1F!4ifz
pCblno9zyJ
FJKErsBTp6';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php