public static boolean checkTelNumber(String telNumber) { // +380501234567
    int countOpen = 0; // кол-во открывающихся скобок
    int countClose = 0; // кол-во закрывающихся скобок
    int plusCount = 0; // кол-во плюсов
    boolean result = false;
    int openStartPoint = 0; // индекс открывающейся скобки
    int closeStartPoint = 0; // индекс закрывающейся скобки
    if (telNumber == null || telNumber == "") {
        result = false;
    } else {
        if (Character.isDigit(telNumber.charAt(telNumber.length() - 1))) {// номер заканчивается на цифру
            if (telNumber.startsWith("+") && telNumber.replaceAll("[^0-9]", "").matches("\\d{12}"))
                result = true; // если номер начинается с '+', то он содержит 12 цифр
            else if ((Character.isDigit(telNumber.charAt(0)) || telNumber.startsWith("(")) && telNumber.replaceAll("[^0-9]", "").matches("\\d{10}"))
                result = true; // если номер начинается с цифры или открывающей скобки, то он содержит 10 цифр
            for (char c : telNumber.toCharArray()) {
                if (c != '+' && c != '(' && c != ')' && !Character.isDigit(c)) { // номер может содержать только цифры, '+', '(' и ')'
                    result = false;
                    break;
                }
                if (c == '+') plusCount++;
                if (c == '(') { // кол-во открывающихся скобок
                    countOpen++;
                    openStartPoint = telNumber.indexOf(c); // индекс открывающейся скобки
                }
                if (c == ')') { // кол-во закрывающихся скобок
                    countClose++; // кол-во плюсов
                    closeStartPoint = telNumber.indexOf(c); // индекс закрывающейся скобки
                }

                if (countOpen > 0 || countClose > 0) { // если есть хоть одна скобка
                    if (countOpen == 1 && countClose == 1) { // может содержать 1 пару скобок '(' и ')'
                        if (openStartPoint < closeStartPoint && (closeStartPoint + 1) - (openStartPoint + 1) == 4) //  скобки (если они есть) внутри содержат четко 3 цифры
                            result = true;
                        else result = false;
                    } else result = false;
                }

            }
            if (plusCount>1) result = false; // если плюсов больше 1
        } else {
            result = false;

        }
    }
    return result;
}