Из JavaDocs:
Matcher.matches()
пытается сопоставить всю входную последовательность с шаблоном. Matcher.find()
сканирует входную последовательность в поисках следующей подпоследовательности, которая соответствуетшаблон.
Вы должны использовать Matcher.find()
, если вы ищете некоторую подстроку (даже один символ), которая соответствует определенным правилам, например, не является буквенно-цифровой.
Или вы можете использоватьMatcher.matches()
, но тогда шаблон регулярного выражения должен быть [a-zA-Z0-9 ]+
, что означает, что вы хотите совпадение, если строка состоит только из допустимых символов.Если появится какой-либо другой символ, match () вернет false.