NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
Phone Number Regex Python Validator

Validador de Regex para Números de Teléfono en Python

Valide números de teléfono con precisión usando el Validador de Regex para Números de Teléfono en Python. Ya sea que verifique formatos locales o patrones internacionales, esta herramienta garantiza una validación precisa adaptada para aplicaciones Python. Para pruebas más extensas, use el Python Regex Tester o profundice con utilidades como el Validador de Regex de Dirección IP en Python y el Validador de Regex de Email en Python.

Validador de Regex para Números de Teléfono en Python - Documentación

¿Qué es el Regex de Números de Teléfono en Python?

El regex de números de teléfono en Python le permite validar si una cadena coincide con los formatos de número de teléfono esperados, ya sean locales, internacionales o formateados para mayor legibilidad.

En Python, esto se realiza normalmente usando el módulo re con un patrón de expresión regular que verifica dígitos, códigos de país opcionales, separadores (como -, espacio o ()) y longitudes válidas. El módulo re es la biblioteca integrada de Python para trabajar con expresiones regulares, facilitando la búsqueda, coincidencia y manipulación de texto mediante patrones.

Puede incluir anchors en su expresión regular para garantizar que el número de teléfono completo coincida desde el inicio hasta el final, evitando coincidencias parciales. Por ejemplo:

^(+\d{1,3})?\s?(?\d{1,4})?[\s.-]?\d{3}[\s.-]?\d{4}$

Este patrón acomoda códigos de país opcionales, espacios, paréntesis y varios separadores como puntos, espacios o guiones.

Los principales componentes que puede querer que su regex maneje incluyen:

  • Código de país: Generalmente opcional, suele comenzar con un +, y consta de uno o más dígitos (por ejemplo, +1, +44, +91).

  • Código de área: Puede estar entre paréntesis, y el número de dígitos puede variar según el país o región.

  • Número local: La secuencia principal de dígitos, a menudo separada en grupos por espacios, guiones o puntos para mayor legibilidad.

Para comenzar, simplemente importe el módulo:

python import re

El módulo re proporciona varias funciones clave:

  • re.search(): Escanea toda la cadena y devuelve un objeto de coincidencia si el patrón se encuentra en algún lugar.

  • re.match(): Verifica una coincidencia solo al principio de la cadena.

  • re.findall(): Devuelve una lista de todas las coincidencias no superpuestas en la cadena.

  • re.compile(): Compila un patrón regex en un objeto de patrón reutilizable para una coincidencia repetida eficiente.

Formatos Comunes de Números de Teléfono

Los números de teléfono pueden aparecer en una variedad de formatos dependiendo del país, la región y la preferencia del usuario.

  • Formato internacional: Incluye un código de país (precedido por +), código de área y número local.

  • Formato local: Generalmente omite el código de país, usando solo el código de área y el número local.

Códigos de País y de Área

  • Códigos de país: Identifican números de teléfono internacionalmente (por ejemplo, +1 para EE. UU., +44 para el Reino Unido).

  • Códigos de área: Ayudan a identificar regiones o ciudades específicas dentro de un país y pueden variar en longitud.

Separadores Comunes

  • Espacios

  • Guiones

  • Puntos

  • Sin separadores

  • Paréntesis alrededor del código de área

Funciones Clave del Módulo re de Python para Validación con Regex

  • re.search(): Escanea toda la cadena buscando la primera ubicación donde su patrón coincida.

  • re.match(): Se enfoca solo en el inicio de una cadena.

  • re.findall(): Recorre la entrada y recopila cada ocurrencia no superpuesta de su patrón.

  • re.compile(): Le permite preparar y reutilizar un patrón regex para validaciones más rápidas.

¿Cuándo Usarlo?

  • Formularios de registro de usuario para garantizar que las entradas de teléfono sean correctas

  • APIs que procesan datos de contacto

  • Sistemas CRM para limpiar y validar entradas móviles

  • Sistemas SMS/llamadas para evitar fallos de mensaje por formatos incorrectos

Patrones Regex Comunes para Números de Teléfono

  1. Solo dígitos básicos (número estilo EE. UU. de 10 dígitos):

    ^\d{10}$

    Coincide con 9876543210

  2. Con código de país (por ejemplo, +91 para India):

    ^\+\d{1,3}\d{7,14}$

    Coincide con +919876543210

  3. Formateado con espacios o guiones:

    ^\+?\d{1,3}[-\s]?\(?\d{3}\)?[-\s]?\d{3}[-\s]?\d{4}$

    Coincide con +1 800-555-1234 o (800) 555-1234

Cómo Validar Números de Teléfono con Regex en Python

Aquí tiene un ejemplo completo usando el módulo re:

import re

def is_valid_phone(phone): # Permite código de país opcional, espacios, guiones, paréntesis pattern = re.compile(r'^+?\d{1,3}?[-\s]?(?\d{2,4})?[-\s]?\d{3,4}[-\s]?\d{4}$') return pattern.match(phone) is not None

Casos de prueba

print(is_valid_phone("+91 98765 43210")) # True print(is_valid_phone("(022) 123-4567")) # True print(is_valid_phone("9876543210")) # True print(is_valid_phone("12345")) # False

Mejorar la Legibilidad con Grupos con Nombre

Los grupos con nombre en regex permiten etiquetar cada sección del patrón con un nombre descriptivo. Por ejemplo:

pattern = re.compile(r'(?P<country_code>+\d{1,3})?\s?(?(?P<area_code>\d{1,4}))?[\s.-]?(?P<local_number>\d{3}[\s.-]?\d{4})')

Puede acceder a cada parte por nombre, lo que hace su código más claro y menos propenso a errores.

Combine con Estas Herramientas

Consejos Avanzados

  • Siempre normalice los números de teléfono tras la validación para el almacenamiento (por ejemplo, elimine guiones o espacios).

  • Si trabaja con usuarios internacionales, prefiera patrones que admitan + opcional y longitudes variables.

  • Evite asumir una longitud fija; diferentes países tienen diferentes estándares (por ejemplo, Reino Unido, India, EE. UU.).

  • Use re.fullmatch() en lugar de re.match() si desea coincidir estrictamente con toda la cadena.

  • Para la interfaz de usuario, considere combinar la validación regex con menús desplegables de códigos de país para mejorar la precisión.

Manejo de Errores Comunes de Entrada del Usuario

Los usuarios pueden ingresar números de formas inesperadas. Puede preprocesar la entrada antes de aplicar su regex:

def preprocess_phone_number(phone_number):

Eliminar espacios adicionales

phone_number = " ".join(phone_number.split())

Reemplazar separadores incorrectos comunes

phone_number = phone_number.replace(",", ".").replace(";", ".") return phone_number

def validate_phone_number(phone_number): phone_number = preprocess_phone_number(phone_number) match = pattern.search(phone_number) return bool(match)

Técnicas Avanzadas de Validación de Números de Teléfono

1. Grupos con Nombre para Mayor Claridad

pattern = re.compile(r"(?P<country_code>+\d{1,3})?\s?(?(?P<area_code>\d{1,4}))?[\s.-]?(?P<local_number>\d{3}[\s.-]?\d{4})" )

2. Validar Códigos de País o Área Específicos

pattern = re.compile( r"(+1)?\s?(?(2\d{2}[3-9]\d{2}))?[\s.-]?\d{3}[\s.-]?\d{4}" )

3. Manejo de Errores Comunes de Entrada del Usuario

def preprocess_phone_number(phone_number):
# Eliminar espacios adicionales
phone_number = " ".join(phone_number.split())
# Reemplazar separadores incorrectos comunes
phone_number = phone_number.replace(",", ".").replace(";", ".")
return phone_number

def validate_phone_number(phone_number): phone_number = preprocess_phone_number(phone_number) match = pattern.search(phone_number) if match: return True return False

Casos de Uso

  • Validar entradas de usuario en formularios de Django o Flask

  • Filtrar datos de contacto masivos en pipelines ETL

  • Verificar números de teléfono antes de enviar alertas SMS

  • Agregar restricciones regex en validadores de datos basados en Python

Frequently Asked Questions

¿Este regex admite formatos de línea fija?

Si desea validar números para códigos de país o área específicos, puede adaptar fácilmente el patrón. Por ejemplo, para coincidir con números de EE. UU. con códigos de área entre 200 y 999: pattern = re.compile(r"(+1)?\s?(?(2\d{2}[3-9]\d{2}))?[\s.-]?\d{3}[\s.-]?\d{4}"). Esto permite flexibilidad tanto para números móviles como de línea fija y reconoce códigos de área con paréntesis o con/sin separadores.

¿Puedo usar este regex para formatos internacionales?

Sí. El prefijo + y la coincidencia flexible de dígitos permiten la mayoría de los números internacionales.

¿Cómo extraigo solo los números de teléfono válidos de un archivo de texto?

Use re.findall() con su patrón regex para obtener todas las coincidencias válidas de cualquier cadena.

¿Es suficiente el regex para validar números de teléfono reales?

El regex verifica el formato, no si el número existe. Para validación en tiempo real, combínelo con APIs de OTP o búsqueda de números.

¿Debo almacenar números formateados o sin formatear?

Prefiera almacenar números normalizados (por ejemplo, solo dígitos) y formatearlos para la visualización en tiempo de ejecución.

¡Pruebe sus APIs hoy!

Escriba en español simple, Qodex lo convierte en pruebas seguras y listas para ejecutar.