Сначала удалите запятую из класса персонажей.Вы не ищете запятые.
Поскольку вы запрещаете , не привязывайте выражение, разрешите совпадение в любом месте строки.Фактически, matches
привязывает выражение для вас, поэтому мы должны преднамеренно разрешить символы до и после запрещенного класса символов:
String pattern = ".*[04-9].*";
if(str.matches(pattern)){
// disallow
}
Live Example
Кроме того, вы можете избежать использования этих .*
, используя Pattern.compile
, а затем использовать Pattern
вместо matches
, так как он не будет автоматически привязывать шаблон, как matches
.