入力された文字列に対して、その文字列が半角英数の8文字以内である
という条件文を作りたいのですがどうやれば良いでしょうか?

String id = request.getParameter("id");
if (id.matches("[a-zA-Z0-9]{8}")){
out.println("正規なIDの文字");
} else {
out.println("IDに不正な文字が使われてる");
}

こんな風に書いてみましたが、これだと入力値が
きっちり8文字でないと正しい結果を返してくれませんでした。