2010-06-26 86 views
5

¿Existe alguna manera fácil de verificar si un número de teléfono ingresado por el usuario incluye el código de país y para validar que el número es correcto? No utilizo ningún formato específico, el número en sí debe ser solo dígitos, no ('s, -'s y similares. ¿Es posible tal validación sin pedirle al usuario un país? El truco es que quiero trabajar con todos los números en todo el mundo.¿Cómo verificar si el número de teléfono ingresado por el usuario incluye el código de país?

supongo que no se puede hacer con expresiones regulares (buscado en Google un poco y encontró un montón de cosas, pero no para este problema). ¿hay alguna biblioteca para que? estoy usando Python.

O tal vez tendría más sentido aplicar un formato, por ejemplo, X-YYYYYYYY ... donde X sería un código de país, o algo así?

+1

¡Bienvenido a Stack Overflow! Los números telefónicos son una pesadilla. –

Respuesta

1

Estudié este tema por un tiempo. Tenemos una gran base de datos. con números, nadie sabe si tienen código contry o no. La respuesta general es : es imposible descubrirlo. Teníamos algunos números que eran números válidos de EE. UU. Sin código de país (1) y números válidos de otros países con código de área. Pero en el 99% de los casos puede verificar si la longitud del número es 9, entonces no hay código contry. Debe hacer cumplir usuarios para ingresar el código contry.

4

Aquí está Google's library for dealing with phone numbers (está en Java). Sin embargo, como Google también es una tienda de Python, imagino que podrían tener una versión de Python disponible en alguna parte o puede extraer lo que necesita y traducirlo.

+0

no funciona. Ingresé mi número de móvil sin más y configuré EE. UU. Como valor predeterminado. No fue capaz de analizarlo. Entonces es inútil. En mi respuesta di un caso cuando NO se pueden hacer ciertas suposiciones. – Andrey

+0

Sin conocer su número de teléfono, no puedo hablar de su eficacia en su situación, pero cuando ingreso el mío o cualquier otro número de 10 dígitos sin una ventaja adicional y ajuste US, se analiza correctamente. No estoy seguro de cuál sería la diferencia. – Andy

+0

¡Biblioteca brillante! Gracias por compartir. Aquí está la nueva ubicación del repositorio: https://github.com/googlei18n/libphonenumber – coder9

2

un número como 247 8000 podría ser:

  • el número local 247 8000 en un área no especificada en un país no especificado, tal vez +1 212 247 8000
  • el número local 8000 en el código de área 247 en un país no especificado, tal vez +269 247 8000
  • el número local 8000 en el código 247 país, +247 8000

Sin más contexto, es imposible decir.

El símbolo + es vital para identificar la parte del código del país.

Cuestiones relacionadas