$re = '/^[a-z](?=(?:[a-z]*\d){0,4}(?![a-z]*\d))(?=[a-z\d]{3,11}$)[a-z\d]+$/m';
$str = 'a1a2a3a4aaaa
a3333aaaaaaa
a1a2a3aaaaa2
a1a2a3
a222
aaaa
a2aa
f2fdfgdd
w333rrrrrrr4
rrrrrrrr4444
r22rrrrrrrrr
g4fff333ffff
333333333333
1111
1aaa
1aaaaaaaaaaa
1a2aaaaaaaaa
a1aaaaaaaaaaa
a11111aaaaaa
a122a3aaaaa2
a1a2a3a4a5aa
';
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