Может и не оптимизирован РЕДЖЕКС в подгруппы но вроде как-то так -
В чем ошибка ?
package com.javarush.task.task22.task2212;
/*
Проверка номера телефона
^((\+(\d{2}\d{10})|\+\d{2}\(\d{3}\)\d{7})|^(\+)|(^\(\d{3}\)\d{7})|(^\d{1})(\(\d{3}\)\d{6}))
*/
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static boolean checkTelNumber(String telNumber) {
if (telNumber == null || telNumber == "") return false;
return telNumber.matches("^((\\+(\\d{2}\\d{10})|\\+\\d{2}\\(\\d{3}\\)\\d{7})|^(\\+)|(^\\(\\d{3}\\)\\d{7})|(^\\d{1})(\\(\\d{3}\\)\\d{6}))");
}
public static void main(String[] args) {
System.out.println(checkTelNumber("+380501234567")); //true
System.out.println(checkTelNumber("+38(050)1234567")); //true
System.out.println(checkTelNumber("(050)1234567")); // true
System.out.println(checkTelNumber("0(501)234567")); // true
System.out.println(checkTelNumber("+38)050(1234567")); // false
System.out.println(checkTelNumber("+38(050)123-45-67")); // false
System.out.println(checkTelNumber("050ххх4567")); // false
System.out.println(checkTelNumber("050123456")); // false
System.out.println(checkTelNumber("(0)501234567")); // false
}
}