Реггулярное выражение не отрабатывает
Прошу помощи .. Есть метод принимает в себя ввод с клавиатуры. Есть 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
→ Ссылка
- Неправильно вызываются методы
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);
}
- Регулярки для определения имени / телефона содержат ошибки:
"[0-9]{11}+"- позволяет номера телефонов длиной 22, 33 и т.д. цифр, следует убрать плюс"[а-яёА-ЯЁ] + [^0-9,@\\? \\!]"- проверяет формат имени в виде одной русской буквы, после которой идут 2 или более пробелов и один произвольный символ, не являющийся цифрой, пробелом, запятой, собакой, или знаками?!