Вместо использования регулярного выражения вы также можете использовать функции ctype_*()
:
var_dump(ctype_alnum('letters') && !ctype_digit('letters')); // bool(true)
var_dump(ctype_alnum('0123chars') && !ctype_digit('0123chars')); // bool(true)
var_dump(ctype_alnum('1324') && !ctype_digit('1324')); // bool(false)
var_dump(ctype_alnum('xcvxxc%$#') && !ctype_digit('xcvxxc%$#')); // bool(false)
Но если вам нужно регулярное выражение, вы можете использовать это:
var_dump(preg_match('/^[a-z0-9]*[a-z]+[a-z0-9]*$/i', $input));