Regex для метода java String.matches?

В основном, мой вопрос в том, почему:

String word = "unauthenticated";
word.matches("[a-z]");

возвращает false? (Разработано в java1.6)

В принципе, я хочу посмотреть, имеет ли строка, переданная мне, альфа-символы.

Ответы

Ответ 1

Функция String.matches() соответствует вашему регулярному выражению для всей строки (как если бы ваше регулярное выражение было ^ в начале и $ в конце). Если вы хотите найти регулярное выражение где-то внутри строки, используйте Matcher.find().

Правильный метод зависит от того, что вы хотите сделать:

  • Убедитесь, что ваша входная строка целиком состоит из буквенных символов (String.matches() с [a-z]+)
  • Проверьте, содержит ли ваша строка ввода какой-либо алфавитный символ (и, возможно, некоторые другие) (Matcher.find() с [a-z])

Ответ 2

Ваш код проверяет, соответствует ли слово одному символу. То, что вы хотите проверить, - это совпадение слова с любым количеством буквенных символов, например:

word.matches("[a-z]+");

Ответ 3

с [a-z] вы математике для ОДНОГО символа.

Что вы, вероятно, ищете, это [a-z]*