Проверил по условиям, применил разные варианты, вроде должно всё подходить
package com.javarush.task.task22.task2212;
/*
Проверка номера телефона
*/
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static boolean checkTelNumber(String telNumber) {
if (telNumber.charAt(0) == '+' && telNumber.contains("(") && telNumber.contains(")") && telNumber.length() - 3 != 12) {
return false;
} else if (telNumber.charAt(0) == '+' && !(telNumber.contains("(") || telNumber.contains(")")) && telNumber.length() - 1 != 12) {
return false;
} else if (telNumber.contains("(") && telNumber.contains(")") && !(telNumber.contains("+")) && telNumber.length() - 2 != 10) {
return false;
} else if (!(telNumber.contains("+")) && !(telNumber.contains("(") && telNumber.contains(")")) && telNumber.length() != 10) {
return false;
}
if (telNumber.indexOf('(') > telNumber.indexOf(')')) {
return false;
}
Pattern pattern = Pattern.compile("[^0-9+()]+");
Matcher matcher = pattern.matcher(telNumber);
if (matcher.find()) {
return false;
}
for (int i = 0; i < telNumber.length(); i++) {
if (telNumber.charAt(i) == '(' && telNumber.charAt(i + 4) == ')') {
break;
} else if (telNumber.charAt(i) == '(') {
return false;
}
}
return true;
}
public static void main(String[] args) {
/*
+380501234567 - true
+38(050)1234567 - true
(050)1234567 - true
0(501)234567 - true
+38)050(1234567 - false +
+38(050)123-45-67 - false +
050ххх4567 - false
050123456 - false
(0)501234567 - false
*/
String test = "+380501234567";
System.out.println(checkTelNumber(test));
}
}