Мне нужно подтвердить начало номера телефона, под этим я подразумеваю, что мне нужно убедиться, что указан код страны. Номер телефона должен начинаться со знака плюс, за которым следуют минимум 1 цифра и максимум 3 цифры, после которых ставится дефис.
Пример действительных чисел ...
+ 1-555 -5555
+ 12-5555555
+ 123- (555) 555-5555
Примеры неверных телефонных номеров
+ 1 (555) 555-5555
5555555555
+ 5555555555
Это то, что я имею до сих пор. Что я делаю, так это убираю все нецифровые цифры, чтобы убедиться, что у меня минимум 10 цифр. Затем я проверяю, что у меня есть код страны минимум из 3 цифр. После этого, если номер телефона не начинается с «+», я добавляю один.
private boolean isPhoneNumberValid(String phoneNumber) {
if (!isPhoneNumberLengthValid(phoneNumber) || !isCountryCodeLenghtValid(phoneNumber)) {
return false;
}
if (!phoneNumber.startsWith("+")) {
request.getDestination().setMobilePhoneNumber("+" + phoneNumber);
}
return true;
}
private boolean isPhoneNumberLengthValid(String phoneNumber) {
return phoneNumber.replaceAll("\\D+","").length() < 10;
}
private boolean isCountryCodeLenghtValid(String phoneNumber) {
String countryCode = StringUtils.left(phoneNumber, phoneNumber.indexOf("-")).replaceAll("\\D+","");
return countryCode.length() >= 1 && countryCode.length() <= 3;
}
Как лучше всего проверить код страны?