Analiza numeros de telefono internacionales, los valida y los reformatea en formas E.164, internacional o nacional.
Analiza numeros de telefono internacionales, los valida y los reformatea en formas E.164, internacional o nacional. Analiza numeros de telefono internacionales, los valida y los reformatea en formas E.164, internacional o nacional.
Contexto
Como se estructuran los numeros de telefono
Un numero de telefono internacional tiene tres partes logicas: un codigo de
pais (1 para Norteamerica, 44 para el Reino Unido, 86 para China, 81 para
Japon, etc.), un numero nacional significativo (codigo de area mas numero de
suscriptor) y una extension opcional. La recomendacion E.164 define la
representacion canonica: un + inicial, el codigo de pais y el numero
nacional sin separadores -- por ejemplo +14155552671. Cuando los usuarios
escriben numeros en forma libre, pueden incluir espacios, guiones,
parentesis o ceros iniciales que solo importan dentro de un pais. Un buen
parser normaliza todo eso en campos estructurados.
Por que parsear es mas dificil de lo que parece
Los paises discrepan en casi todo: la longitud de los numeros nacionales, el
uso de prefijos de troncal (China elimina el 0 inicial al llamar desde el
extranjero, el Reino Unido hace lo mismo con su 0), prefijos moviles frente a
fijos y codigos cortos especiales. 4444 es un numero nacional valido en
algunos paises e invalido en otros. Los planes de numeracion tambien cambian
-- Brasil anadio un digito a todos los moviles en 2016, y el regulador de
cada pais publica cambios. Por eso los validadores serios llevan una base de
datos completa de metadatos en vez de regex fijas. La biblioteca que alimenta
esta pagina incluye los metadatos oficiales de Google para cada pais y
territorio, asi que sabe, por ejemplo, que los moviles chinos tienen 11
digitos y empiezan por 1.
Usar el parser
Escribe un numero con o sin + y codigo de pais. Si omites el codigo de
pais, elige un pais por defecto en el desplegable para que el parser pueda
resolver el formato nacional. La herramienta informa de la forma E.164, el
formato internacional con espacios, el formato nacional, el pais detectado,
el codigo de llamada, el numero nacional, si el numero es valido y posible,
el tipo (movil, fijo, gratuito, etc.) y la operadora cuando los metadatos la
determinan. Un numero puede ser "posible" (longitud y prefijo correctos) sin
ser "valido" (asignado y bien estructurado) -- ambas comprobaciones se
muestran.
Notas practicas
Detectar el pais desde un numero pelado es heuristico: +1 555 2671 apunta
sin ambiguedad a Norteamerica, pero los numeros cortos pueden coincidir con
varios paises. Incluye siempre el codigo de pais para uso entre maquinas y
almacena los numeros en forma E.164 en tu base de datos. Al validar entrada
de usuario, prefiere comprobaciones de "posible" para feedback UX inmediato y
reserva las de "valido" para el envio. Esta herramienta corre por completo en
tu navegador con los datos de libphonenumber-js (MIT) -- nada de lo que
escribes se transmite.
Preguntas frecuentes
Por que obtengo 'posible pero no valido'?
Posible significa que el numero coincide con la longitud y prefijo generales del pais. Valido significa que es un numero realmente asignado segun los metadatos oficiales. Muchos numeros de prueba o rangos sin asignar son posibles pero no validos.
Que es E.164 y por que almacenarlo?
E.164 es el estandar de la UIT para numeros de telefono: + luego codigo de pais y numero nacional, maximo 15 digitos. Almacenar esta unica forma canonica hace triviales la deduplicacion y las llamadas internacionales, pues es inequivoco en todos los paises.
Puedo validar numeros sin codigo de pais?
No de forma fiable. Sin codigo de pais el parser tiene que adivinar, y los numeros cortos pueden ser validos en muchos paises. Proporciona un pais por defecto (o exige el codigo) siempre que la entrada no sea explicitamente internacional.
Como se determina el tipo de numero?
Los metadatos empaquetados clasifican los rangos por prefijo: movil, fijo, gratuito, premium, VoIP, coste compartido y mas. El tipo solo se muestra cuando los metadatos lo asignan; si no, aparece un guion.
Se envia mi entrada a algun sitio?
No. El parseo, la validacion y el formateo ocurren en tu navegador con el paquete libphonenumber-js (MIT) empaquetado. La pagina funciona totalmente offline tras cargar.
Por que el mismo numero se formatea distinto en cada pais?
El formato internacional agrupa los digitos segun las convenciones del pais (por ejemplo, los franceses agrupan de dos en dos; los de EE. UU. usan 3-3-4). E.164 permanece identico; solo cambia la forma de mostrar.