Solución al Ejercicio: Validar teléfono español
📋 Copiar código
import re
def validar_telefono_es(telefono):
"""
Valida si una cadena de texto parece ser un número de teléfono válido en España.
Args:
telefono: La cadena de texto a validar.
Returns:
True si parece ser un número de teléfono español válido, False en caso contrario.
"""
telefono_limpio = re.sub(r'[\s-]', '', telefono) # Elimina espacios y guiones
patron = re.compile(r'^[6789]\d{8}$')
return bool(patron.match(telefono_limpio))
# Ejemplos de uso
telefono1 = "612345678"
resultado1 = validar_telefono_es(telefono1)
print(f"'{telefono1}' es un teléfono español válido: {resultado1}")
telefono2 = "799988877"
resultado2 = validar_telefono_es(telefono2)
print(f"'{telefono2}' es un teléfono español válido: {resultado2}")
telefono3 = "900112233"
resultado3 = validar_telefono_es(telefono3)
print(f"'{telefono3}' es un teléfono español válido: {resultado3}")
telefono4 = "8-123-456-78"
resultado4 = validar_telefono_es(telefono4)
print(f"'{telefono4}' es un teléfono español válido: {resultado4}")
telefono5 = "612 345 678"
resultado5 = validar_telefono_es(telefono5)
print(f"'{telefono5}' es un teléfono español válido: {resultado5}")
telefono6 = "512345678"
resultado6 = validar_telefono_es(telefono6)
print(f"'{telefono6}' es un teléfono español válido: {resultado6}")
telefono7 = "6123456789"
resultado7 = validar_telefono_es(telefono7)
print(f"'{telefono7}' es un teléfono español válido: {resultado7}")
telefono8 = "Hola"
resultado8 = validar_telefono_es(telefono8)
print(f"'{telefono8}' es un teléfono español válido: {resultado8}")
telefono9 = ""
resultado9 = validar_telefono_es(telefono9)
print(f"'' es un teléfono español válido: {resultado9}")
Explicación del Código:
-
Importa el módulo re
:
Se utiliza para trabajar con expresiones regulares.
-
Función
validar_telefono_es(telefono)
:
telefono_limpio = re.sub(r'[\s-]',
'', telefono)
: Elimina todos los espacios en blanco (\s
)
y los guiones (-
) de la cadena de teléfono para
normalizarla antes de la validación.
patron = re.compile(r'^[6789]\d{8}$')
:
Compila una expresión regular para verificar el formato del número de
teléfono:
^
: Coincide con el
inicio de la cadena.
[6789]
: Coincide con
un dígito que sea 6, 7, 8 o 9 (los prefijos comunes de teléfonos
móviles y algunos fijos en España).
\d{8}
: Coincide con
exactamente 8 dígitos (0-9).
$
: Coincide con el
final de la cadena.
return
bool(patron.match(telefono_limpio))
: Intenta hacer coincidir el
patrón con la cadena de teléfono limpia desde el principio. Devuelve
True
si la cadena completa coincide con el patrón (es
decir, comienza con 6, 7, 8 o 9 y tiene exactamente 9 dígitos en total
después de eliminar espacios y guiones), y False
en caso
contrario.
Ejemplos de Uso:
Los ejemplos muestran cómo la función valida
diferentes cadenas para determinar si parecen ser números de teléfono españoles
válidos según el formato especificado. Se incluyen casos con y sin
espacios/guiones, números válidos e inválidos según la longitud y el prefijo.