2010-10-30 17 views
6

¿Cómo puedo validar un número de teléfono celular sudafricano? El número debe comenzar con el código de país como +27 y tener un máximo de 11 dígitos, totalizando 12 con el signo "+".Validar Sudáfrica Número de teléfono celular

+1

No olvide que los números futuros pueden ser más largos. –

Respuesta

6

Pruebe una expresión regular como:

^\+27[0-9]{9}$ 

Traducido al PHP que sería:

if(preg_match("/^\+27[0-9]{9}$/", $phoneNumber)){ 
    echo "Valid number"; 
} else { 
    echo "Invalid number"; 
} 
+1

NO use esto. Cada sitio que valida mal los números de teléfono me hace irme de inmediato. Permitir guiones y espacios, no fuerce el +. –

+0

@Coronatus: el número debe validar en estas condiciones: 'El número debe comenzar con el código de país como +27 y tener un máximo de 11 dígitos de longitud, un total de 12 con el signo' + ''. Permitir espacios en blanco y guiones hará que el número tenga más de 12 caracteres. – Harmen

+0

@Coronatus: no veo el problema de forzar a los usuarios a escribir un número de teléfono válido, como un nombre de usuario o correo electrónico válidos. Controlar la entrada de los usuarios es una práctica bastante buena cuando se quiere proteger su aplicación. – Repox

0
$number = preg_replace('/[^0-9]/', '', $number); 
if ((substr($number, 0, 2) != '27') || strlen($number) != 11) 
{ 
    return false; 
} 
// else valid 
+0

Si primero quita todos los números que no son números, un 'número de teléfono' como '27abc554def23565' también es válido ... – Harmen

1

Tome la entrada y la tira a cabo todo lo que no es un número.

// rm all but Numbers 
$input = 'abC#'; 
$output = preg_replace('#[^0-9]#', '', $input); 
echo($output); 

Cuente los dígitos restantes.

Si se trata de 9 dígitos, prepend "27"

Si es de 11 dígitos de longitud prepend un "+"

Si se trata de 10 dígitos de longitud o menos de 9, a continuación, es de suponer que es no es un formato de número de teléfono válido?

Cuestiones relacionadas