У меня есть список проверенных номеров мобильных телефонов, которые я должен отображать таким же образом:
Желаемый формат:+34 666 111 222
String telefonos =
"666444555,
666-444-555,
666 44 45 55,
666-44-45-55,
+34666555444,
0034666555444";
Pattern pattern = Pattern.compile(""); // aqui es donde me clavo.
Matcher matcher = pattern.matcher(telefonos);
while (matcher.find())
System.out.println(matcher.group());
Ожидаемый результат:
+34 666 444 555
+34 666 444 555
+34 666 444 555
+34 666 444 555
+34 666 555 444
+34 666 555 444
Попробуйте следующее регулярное выражение:
Если вы планируете часто использовать это выражение, рекомендуется использовать константу, чтобы избежать повторной компиляции выражения каждый раз, т.е.:
Вылет из:
Как и в другом вопросе, я рекомендую вам использовать
libphonenumber
( библиотеку Google для проверки телефонных номеров). У него много преимуществ по сравнению с вашей собственной реализацией, например, вам не нужно поддерживать его самостоятельно и что он дает вам номер в международном формате, независимо от того, как пользователь его вводит.Пример того, как он используется:
Теперь есть несколько методов, но наиболее важным будет:
Здесь вы всегда сможете иметь нужный вам международный формат:
Конечно, я всегда рекомендую вам задать вопрос о том, действителен ли номер, прежде чем спрашивать о его международном формате.
Посмотреть демо можно здесь .