2011-04-25 32 views
5

Necesito una expresión regular PHP a través del cual puedo validar un formato de número de teléfono utilizando los siguientes criterios:de expresiones regulares (RegEx) Para números de teléfono con código de país Compruebe

  • En caso de no incluir nada, excepto para los números;
  • No debería comenzar con un cero ya que necesito tener el código de país prefijado;
  • La lista de códigos de país permitidos debe estar allí en RegEx;
  • El dígito inmediatamente después del código de país no debe ser cero;
  • La longitud máxima del número no debe superar los 13 dígitos.

He intentado buscar en Stack Overflow antes de publicar esta pregunta, pero no he podido encontrar la solución exacta. Cualquier ayuda sería muy apreciada.

Editar: Solo quiero que el usuario ingrese el número de teléfono en un formato válido ya que mis clientes hacen algunos errores de formateo al escribirlo. No me preocupa que sea realmente válido (apto para llamadas) ya que el usuario se encargará de eso.

Saludos

Respuesta

5

no me queme los dedos en esto.

Solo con mirar un número de teléfono no puede juzgar si es válido o no, e incluso si parece válido, puede que no sea el número de teléfono que está buscando (es decir, el número de teléfono de otra persona) .

Está tratando de resolver el problema en el nivel incorrecto. La única manera de validar un número de teléfono es llamar realidad;)

una expresión regular que basta con su búsqueda:

/^(1|20|21|..etc)[1-9][0-9]+$/ 

lista de códigos de país (separados por |) seguido de un dígito que no es 0 , seguido de cualquier dígito en cualquier cantidad de veces.

No puede hacer la verificación de 13 longitudes y la verificación de país en una expresión regular porque la longitud de los códigos de país varía (que yo sepa, al menos). Puede hacer el check 13 de longitud por una expresión regular genérico como:

/^.{,13}$/ 

Coincidencia nada hasta 13 caracteres de longitud

+1

I segundo esto. El OP tiene buenas y válidas ideas, pero hay tantas maneras de enviar un número de teléfono no válido que pasará * cualquier * verificación de patrón, realmente no va a tener mucho sentido. –

+0

Solo quiero que el usuario ingrese el número de teléfono en un formato válido. No me preocupa que sea realmente válido, ya que el usuario se encargará de eso. ¡Gracias por la respuesta! :) – Saad

+0

@Saad: Aquí hay un ejemplo de lo que entendí. Regex: '(\ d {2,3}) (\ d {4}) (\ d {6})' Prueba No: '911234567890' – abi1964

3

El dígito inmediatamente después del código de país no debe ser un cero;

Ese sistema fallará en Italia. El 0 principal para los teléfonos italianos es marcado desde el extranjero.

Podrían ser algunos otros países donde eso también sucede, pero Italia es el más conocido.

La longitud máxima del número no debe superar los 13 dígitos.

Para números más cortos pero con una extensión añadida, esa regla se romperá en varios países.

Con un código de país de 3 dígitos, un código de área de 3 dígitos y un número de suscriptor de 8 dígitos, tiene un dígito corto.

Cuestiones relacionadas