스티브 B :
나는 확실히 국가 코드가 제공 한 것을 확인이 I 평균 I 필요에 의해, 전화 번호의 시작 부분을 확인해야합니다. 전화 번호는 시작해야 1을 더한 수의 최소 뒤에 하이픈 3 개 개의 숫자의 최대 뒤에 기호.
유효 숫자의 예 ...
+ 1-555-5555
+ 12-5555555
+ 123- (555) 555-5555
잘못된 전화 번호의 예
+1 (555) 555-5555
5,555,555,555
5,555,555,555
이것은 내가 지금까지있는 것입니다. 내가하고 있어요 것은 내가 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;
}
국가 코드를 검증하는 가장 좋은 방법은 무엇입니까?
아빈 드 쿠마 Avinash :
당신은 아래의 솔루션에 언급 된 정규 표현식을 사용할 수 있습니다 :
public class Main {
public static void main(String[] args) {
String[] phoneNumbers = { "+1-555-5555", "+12-5555555", "+123-(555) 555-5555", "+1(555) 555-5555", "5555555555",
"+5555555555" };
for (String phoneNumber : phoneNumbers) {
if (phoneNumber.matches("^[+][0-9]{1,3}[-][[(]{0,1}[0-9]+[-)\\s]{0,1}]*[0-9]{4}$")) {
System.out.println(phoneNumber + " passed validation");
} else {
System.out.println(phoneNumber + " failed validation");
}
}
}
}
산출:
+1-555-5555 passed validation
+12-5555555 passed validation
+123-(555) 555-5555 passed validation
+1(555) 555-5555 failed validation
5555555555 failed validation
+5555555555 failed validation