Допуская что ошибка в этом:
if (Pattern.matches("^[a-zA-Z_0-9]", test))
Но какая??