Skip to content

Instantly share code, notes, and snippets.

@sadedv
Created January 19, 2016 10:58
Show Gist options
  • Save sadedv/1e1ebaab7ba68c57061b to your computer and use it in GitHub Desktop.
Save sadedv/1e1ebaab7ba68c57061b to your computer and use it in GitHub Desktop.
Проверка номера телефона, регулярные выражения RegExp
/* Проверка номера телефона
Метод checkTelNumber должен проверять, является ли аргумент telNumber валидным номером телефона.
Критерии валидности:
1) если номер начинается с '+', то он содержит 12 цифр
2) если номер начинается с цифры или открывающей скобки, то он содержит 10 цифр
3) может содержать 0-2 знаков '-', которые не могут идти подряд
4) может содержать 1 пару скобок '(' и ')' , причем если она есть, то она расположена левее знаков '-'
5) скобки внутри содержат четко 3 цифры
6) номер не содержит букв
7) номер заканчивается на цифру
Примеры:
+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 class Solution
{
public static void main(String[] args)
{
System.out.println(checkTelNumber("+380501234567"));
System.out.println(checkTelNumber("+38(050)1234567"));
System.out.println(checkTelNumber("+38050123-45-67"));
System.out.println(checkTelNumber("050123-4567"));
System.out.println();
System.out.println(checkTelNumber("+38)050(1234567"));
System.out.println(checkTelNumber("+38(050)1-23-45-6-7"));
System.out.println(checkTelNumber("050ххх4567"));
System.out.println(checkTelNumber("050123456"));
System.out.println(checkTelNumber("(0)501234567"));
}
public static boolean checkTelNumber(String telNumber)
{ //если номер содержит + в начале, откр.скобочка и - которые встречается один раз (?), встречаются 11 раз
// цифры и - и скобочки по одному разу и в конце 12-я цифра
return (telNumber.matches("^\\+[\\(\\-]?(\\d[\\(\\)\\-]?){11}\\d$") ||
//ИЛИ один раз откр.скобочка, 9 раз цифры, 1 раз скобочки и - скобочки по одному разу и в конце 10-я цифра
telNumber.matches("^\\(?(\\d[\\-\\(\\)]?){9}\\d$")) &&
//И + один раз сколько угодно цифр, но если скобочка открыта в ней могут быть только 3 цифры, (ddd) 1 раз
//сколько угодно цифр до знака - потом опять так потом сколько угодно цифр до последней цифры
telNumber.matches("[\\+]?\\d*(\\(\\d{3}\\))?\\d*\\-?\\d*\\-?\\d*\\d$");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment