Проверка номера телефона

  • 24
  • Недоступна
Метод checkTelNumber должен проверять, является ли аргумент telNumber валидным номером телефона. Критерии валидности: 1) если номер начинается с '+', то он содержит 12 цифр. 2) если номер начинается с цифры или открывающей скобки, то он содержит 10 цифр.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (312)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Valeriy
Уровень 30, Киев
около 10 часов назад
та изи, всего 9 попыток)
Руслан
Уровень 29, Стерлитамак, Россия
1 декабря 2021, 23:05
Решил в первый раз с помощью двух навороченных регулярок - в итоге не правильно. Сделал по отдельности 6 регулярок, в итоге все получилось "+380501234567",true "+38(050)1234567",true "(050)1234567",true "0(501)234567",true "+38)050(1234567 ", "+38(050)123-45-67", "050ххх4567 ", "050123456", "(0)501234567", "+7(499)80501234",true "+237(499)501234"true Примеры в помощь. Помогли. Особенно 2 последних случая
Druha
Уровень 28
29 ноября 2021, 21:04
решение от javarush на мой взгляд не полностью корректное. 050123(456)7 номер распознаётся как валидный, хотя на мой взгляд он менее корректный чем другие "невалидные" номера из условия задачи. задачу решил с помощью одного регулярного выражения
Sulf8
Уровень 35, Самара, Россия
28 ноября 2021, 20:22
Я рассудил так: я на написание каракатицы с кучей
if (условие) return false;
убью меньше времени, чем на подбор нормальной регулярки. Тем более мою каракатицу легко протестить будет. В итоге 42 строки и около 1 часа времени.
Лора
Уровень 29, Киев, Украина
25 октября 2021, 18:28
1. Проверка на null. 2. Проверка длины строки - если меньше 10, больше 15, 11 или 14 – return false. 3. 4 простенькие регулярки для каждого из 4-х вариантов возможной длины строки. if(length == ......) regex = .....; 4. if (telNumber.matches(regex)) return true; Валидацию прошло) Как по мне, так проще для восприятия и тестирования.
Андрей
Уровень 27, Москва, Россия
Expert
27 сентября 2021, 01:16
Выше регулярка от JR (не принимал Валя мою) Ниже моя регулярка Не идеал, конечно, но все тестовые варианты корректно отрабатывает как онлайн на сайте, так и локально поочерёдными вызовами метода из main. P.S. Вариант регулярки от JR работает корректно если использовать его отдельными частями с несколькими вызовами метода checkTelNumber(), а у меня же он сгрупирован в одно выражение с логическим "или" в самом выражении.
Вадим
Уровень 28, Новосибирск, Россия
14 октября 2021, 16:23
Если их регулярка и правда такая, то она позволяет передать в скобках больше 3-х чисел и меньше тоже
Andrey Java Developer в Инфотранс
26 сентября 2021, 15:51
Видимо исправили, что программа проверяет только тестовые значения - по ним все норм, но валидатор снова не пропускает(
Andrey Java Developer в Инфотранс
26 сентября 2021, 16:17
А, нет, проверка только по критериям валидности
Андрей Гузанов
Уровень 36, Новосибирск, Россия
26 сентября 2021, 11:30
Не пропускает:
return telNumber.matches("^((\\+\\d{2}((\\(\\d{3}\\)(\\d{7}$))|\\d{10}$))|(\\d(\\(\\d{3}\\))\\d{6}$)|(\\(\\d{3}\\))\\d{7}$)");
2DaMoon
Уровень 41
29 августа 2021, 15:22
номер заканчивается на цифру
Минус 2 попытки из-за этого( + не забываем про проверку на null
Sasha Java Developer в UKEESS
8 августа 2021, 12:49
Не забудьте проверку на null