I would just use another regular expression to check the additional requirements.
if (!preg_match('/^[A-Za-z0-9]{6,15}$/',$value)) {
$bad_array[$key] = "bad (not alphanumeric or wrong length)";
}
else if (!preg_match('/[0-9]/', $value)) {
$bad_array[$key] = "bad (doesn't contain any digits)";
}
There may be a way to do it all in one regular expression, but if so it would probably be more complicated.