Use libphonenumber to get country codes

This commit is contained in:
Jon Chambers 2024-11-22 09:49:26 -05:00 committed by Jon Chambers
parent 00c11f5dd0
commit 010ed77345
1 changed files with 5 additions and 8 deletions

View File

@ -24,16 +24,12 @@ import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Function; import java.util.function.Function;
import java.util.random.RandomGenerator; import java.util.random.RandomGenerator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
public class Util { public class Util {
private static final RandomGenerator RANDOM_GENERATOR = new Random(); private static final RandomGenerator RANDOM_GENERATOR = new Random();
private static final Pattern COUNTRY_CODE_PATTERN = Pattern.compile("^\\+([17]|2[07]|3[0123469]|4[013456789]|5[12345678]|6[0123456]|8[1246]|9[0123458]|\\d{3})");
private static final PhoneNumberUtil PHONE_NUMBER_UTIL = PhoneNumberUtil.getInstance(); private static final PhoneNumberUtil PHONE_NUMBER_UTIL = PhoneNumberUtil.getInstance();
public static final Runnable NOOP = () -> {}; public static final Runnable NOOP = () -> {};
@ -89,10 +85,11 @@ public class Util {
} }
public static String getCountryCode(String number) { public static String getCountryCode(String number) {
Matcher matcher = COUNTRY_CODE_PATTERN.matcher(number); try {
return String.valueOf(PHONE_NUMBER_UTIL.parse(number, null).getCountryCode());
if (matcher.find()) return matcher.group(1); } catch (final NumberParseException e) {
else return "0"; return "0";
}
} }
public static String getRegion(final String number) { public static String getRegion(final String number) {