String formatTelephone(String tel) {
return tel.replace(" ", "")
.replaceFirst("^(0|\\+?62)(\\d{3})(\\d{4})(\\d4)",
"$1$2-$3-$4-")
.replaceFirst("^(0|\\+?62)(\\d{3})(\\d{4})",
"$1$2-$3-");
}
Это займет с начала ^
альтернативу 0 +62 и 62, за которыми следуют группы цифр.Остальное не подставляется.И оригинальный телефон возвращается, скажем, для иностранных номеров.
Поскольку дополнительные меры предосторожности удалены заранее.
^ : start of string, so 99962999 will not match ^62
\\d : digit
X? : optional X
X{3} : XXX
(X|Y|Z) : either X, Y or Z
Добавлен второй replaceFirst
Для работы с 0810-1234-56 по 0810-1234-5678-90 первый метод replaceFirst работает только с более длинным номером.Если заменить, дополнительный -
заставляет второй replaceFirst не работать (возвращая только что замененную строку).