La mejor manera de validar parcialmente un número de teléfono utilizando Java

Steve B:

Necesito validar el inicio de un número de teléfono, con esto me he necesidad media para asegurarse de que se proporciona un código de país. El número de teléfono debe comenzar con un signo de más seguido de un número mínimo de 1 y un máximo de 3 números seguidos por un guión.

Ejemplo de números válidos ...

+ 1-555-5555

+ 12-5555555

+ 123- (555) 555-5555

Los ejemplos de un número de teléfono no válido

+1 (555) 555-5555

5555555555

+5555555555

Esto es lo que tengo hasta ahora. Lo que estoy haciendo es el paso de todos los no-dígitos para verificar que tengo un mínimo de 10 números. entonces verificar que tengo un código de país de un mínimo de 3 números. Después de eso, si el número de teléfono no comienza con un "+", me Introduce uno.

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;
}

¿Cuál es la mejor manera de validar el código de país?

Arvind Kumar Avinash:

Se puede utilizar la expresión regular se menciona en la solución dada a continuación:

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");
            }
        }
    }
}

Salida:

+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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=277970&siteId=1
Recomendado
Clasificación