Реггулярное выражение не отрабатывает

Прошу помощи .. Есть метод принимает в себя ввод с клавиатуры. Есть 2-ве регулярки, которые должны определить, корректен ли ввод и с помощью if внести значения в переменные. При вводе с клавиатуры 11 значного номера имеем false, несмотря на то, что номер корректен.

public void inputCheck(String input) {
        String regexPhone = "[0-9]{11}+";
        String regexName = "[а-яёА-ЯЁ] + [^0-9,@\\? \\!]";
        String name = "";
        String phone = "";
        if (regexName.matches(input)) {
            name = input;
            System.out.println(Main.setNmbrMsg);
           }
        else if (regexPhone.matches(input)) {
            phone = input;
            System.out.println(Main.setNamMsg);
        } else {
            System.out.println(Main.errorMsg);
        }
    }

Ответы (1 шт):

Автор решения: Nowhere Man
  1. Неправильно вызываются методы String::matches, они должны вызываться для переменной input:
if (input.matches(regexName)) {
    name = input;
    System.out.println("Имя: " + name);
} else if (input.matches(regexPhone)) {
    phone = input;
    System.out.println("Телефон: " + phone);
} else {
    System.out.println("Main.errorMsg = " + input);
}
  1. Регулярки для определения имени / телефона содержат ошибки:
  • "[0-9]{11}+" - позволяет номера телефонов длиной 22, 33 и т.д. цифр, следует убрать плюс
  • "[а-яёА-ЯЁ] + [^0-9,@\\? \\!]" - проверяет формат имени в виде одной русской буквы, после которой идут 2 или более пробелов и один произвольный символ, не являющийся цифрой, пробелом, запятой, собакой, или знаками ?!
→ Ссылка