Учитывая ваши три различных формата мобильных номеров, вы можете переформатировать его в общий упомянутый вами +7 999 888-77-66
, сначала записав номера в пять групп чисел, используя следующее регулярное выражение:
^\D*(\d)\D*(\d{3})\D*(\d{3})\D*(\d{2})\D*(\d{2})\D*$
И затем замените его на
+$1 $2 $3-$4-$5
Чтобы восстановить номер в нужном формате.
Проверьте это демо
Java код демо,
List<String> numbers = Arrays.asList("+79998887766", "8 999 8887766", "8-999-888-77-66");
numbers.forEach(x -> {
System.out.println(x + " --> " + x.replaceAll("^\\D*(\\d)\\D*(\\d{3})\\D*(\\d{3})\\D*(\\d{2})\\D*(\\d{2})\\D*$", "+$1 $2 $3-$4-$5"));
});
Выход,
+79998887766 --> +7 999 888-77-66
8 999 8887766 --> +8 999 888-77-66
8-999-888-77-66 --> +8 999 888-77-66