부분적으로 자바를 사용하여 전화 번호를 검증하는데 최선의 방법

스티브 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

추천

출처http://43.154.161.224:23101/article/api/json?id=277965&siteId=1