Привет коллеги, задачу решил, но есть вопросы в контексте данной задачи.
Предположим, что нижеуказанные номера будут считаться валидными (не для данной задачи, а впринципе):
+38(050)12-3456-7
+38(050)1234-56-7
+38(050)1-234-567
Каким образом элегантно задать, что "-" может встречаться 2 раза в номере, но при этом "-" может быть расположено в любом месте (после 7й цифры, после 11й...., а не только строго после 8й и 10й.
Возможно есть какая-то конструкция, которая задаёт возможное количество повторений символов в квадратных, круглых скобках?
Чтото типа такого:
[-{0,2}\d{6}]
Т. е. хочется задать, чтобы "-" встречалось 0, 1 или 2 раза, цифры 6 и все в рандомной последовательности.
Но не смог найти решение.
Прошу помочь.
Pavel
30 уровень
Задача решена, но есть вопросы
Архивный
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ollo
30 мая 2020, 18:43
ну самое регулярными выражениями можно:
String text1 = "+38(050)12-3456-7";
String text2 = "+38(050)1234-56-7";
String text3 = "+38(050)1-234567";
String patternString = "\\+\\d+\\(\\d{3}\\)\\d+\\-\\d+\\-\\d+";
Pattern patter = Pattern.compile(patternString);
Matcher matcher1 = patter.matcher(text1);
boolean matches1 = matcher1.matches();
System.out.println(matches1);
Matcher matcher2 = patter.matcher(text2);
boolean matches2 = matcher2.matches();
System.out.println(matches2);
Matcher matcher3 = patter.matcher(text3);
boolean matches3 = matcher3.matches();
System.out.println(matches3);
0
Pavel
30 мая 2020, 19:08
Не совсем то.
Нижеуказанные выражения эта регулярка тоже примет как номер телефона, но всего цифр должно быть 12:
+38(050)13333333-3333333333333-24567777
+38(050)13-33-2
0
ollo
31 мая 2020, 17:16
новое требование - новое регулярное выражение
можно дальше рестриктить регулярным выражением сколько цифр может быть и т.п.
к примеру "^(\\+38)(\\(?\\d{3}\\)?)([\\d\\-]){9}"
0
Pavel
31 мая 2020, 19:46
Совсем не то...
+38(050)123456789 - 14 цифр, вышеуказанная регулярка показывает, что это валидный номер телефона, а должно быть не более 12 цифр, т. е номер не валидный.
+38(050)--------- - регулярка показывает, что это валидный номер телефона, но это совсем не номер.
0