для более лёгкого понимания того, что хотел написать:
+ или цифра (сколь угодно) / ( или цифра (сколь угодно) / ) или цифра / числа и тире до конца строки:
"^[+\\d]+[\\d[(]]+[\\d[)]][\\d-]+"
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 == null) return false;
int countOfNumbers = countOfDigit(telNumber.toCharArray());
int countOfDash = countOfChar(telNumber.toCharArray(), '-');
if ( countOfDash > 2 ) {
return false;
}
if ((telNumber.charAt(0) == '+')) {
if (countOfNumbers != 12)
return false;
} else if (countOfNumbers != 10) {
return false;
}
Pattern pattern = Pattern.compile("^[+\\d]+[\\d[(]]+[\\d[)]][\\d-]+");
Matcher matcher = pattern.matcher(telNumber);
return matcher.find();
}
/*
+380501234567 - true
+38(050)1234567 - true
+38050123-45-67 - true
050123-4567 - true
+38)050(1234567 - false
+38(050)1-23-45-6-7 - false
050ххх4567 - false
050123456 - false
(0)501234567 - false
*/
public static void main(String[] args) {
System.out.println("+38050123-4-567 " + checkTelNumber("+38050123-4-567"));
System.out.println("+38(050)234567 " + checkTelNumber("+38(0505)234567"));
System.out.println("+38050123-45-67 " + checkTelNumber("+38050123-45-67"));
System.out.println("050123-4567 " + checkTelNumber("050123-4567"));
System.out.println("+38)050(1234567 " + checkTelNumber("+38)050(1234567"));
System.out.println("+38(050)1-23-45-6-7 " + checkTelNumber("+38(050)1-23-45-6-7"));
System.out.println("050ххх4567 " + checkTelNumber("050ххх4567"));
System.out.println("050123456 " + checkTelNumber("050123456"));
System.out.println("(0)501234567 " + checkTelNumber("(0)501234567"));
}
private static int countOfChar(char[] s, char something) {
int count = 0;
for (Character symbol : s) {
if (symbol == something) {
count++;
}
}
return count;
}
private static int countOfDigit(char[] s) {
int count = 0;
for (Character symbol : s) {
if (Character.isDigit(symbol)) {
count++;
}
}
return count;
}
}