Skip to content

Commit dbac3f8

Browse files
authored
Merge pull request mouredev#7735 from JheisonQuiroga/main
#16 - Python
2 parents 1947aef + 1f16bc4 commit dbac3f8

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import re
2+
3+
"""
4+
/*
5+
* EJERCICIO:
6+
* Utilizando tu lenguaje, explora el concepto de expresiones regulares,
7+
* creando una que sea capaz de encontrar y extraer todos los números
8+
* de un texto.
9+
"""
10+
11+
txt = """
12+
Cristiano Ronaldo dos Santos Aveiro (Funchal, Madeira, 5 de febrero de 1985)
13+
es un futbolista portugués. Juega como delantero y su equipo actual es el
14+
Al-Nassr F. C. de la Liga Profesional Saudí. Es internacional absoluto con la
15+
selección de Portugal, de la cual es capitán, máximo goleador histórico y
16+
jugador con más presencias con 217 partidos, logro alcanzado en las eliminatorias
17+
para la Eurocopa 2024, reconocido por el Libro Guinness de los récords.
18+
"""
19+
20+
regex_pattern = r"\d+"
21+
22+
matches = re.findall(regex_pattern, txt)
23+
print(matches)
24+
25+
"""
26+
* DIFICULTAD EXTRA (opcional):
27+
* Crea 3 expresiones regulares (a tu criterio) capaces de:
28+
* - Validar un email.
29+
* - Validar un número de teléfono.
30+
* - Validar una url.
31+
*/
32+
"""
33+
34+
# Validando un e-mail
35+
36+
def email_validation(email):
37+
38+
reg_pattern = r"^[a-zA-Z0-9]+([.+-_][a-zA-Z0-9]+)*@([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$"
39+
40+
# Verificamos si toda la cadena coincide con el patron
41+
42+
return True if re.fullmatch(reg_pattern, email) else False
43+
44+
45+
emails = [
46+
47+
48+
49+
50+
"mal.correo@com", # Inválido (extensión incorrecta)
51+
"sin-arroba.com", # Inválido (falta @)
52+
"@sin_nombre.com" # Inválido (falta nombre)
53+
]
54+
55+
for email in emails:
56+
print(f"{email}: {"Valido" if email_validation(email) else "Invalido"}")
57+
58+
# Validando un número de telefono en Colombia.
59+
# Formato 300-000-0000, debe tener 10 digitos
60+
61+
def phone_validation(phone):
62+
63+
reg_pattern = r'^([3][0-9]{2}-?[0-9]{3}-?[0-9]{4})'
64+
return True if re.fullmatch(reg_pattern, phone) else False
65+
66+
67+
print(phone_validation("320-326-7902")) # True
68+
print(phone_validation("320-326-790235")) # False
69+
print(phone_validation("3203267902")) # True
70+
print(phone_validation("2203267902")) # False
71+
72+
73+
74+
# Validando una URL
75+
def url_validate(url:str) -> bool:
76+
77+
pattern = (
78+
r'^(https?://)' # Protocolo
79+
r'([a-zA-Z0-9-]+\.)*' # Subdominios
80+
r'[a-zA-Z]{2,}' # TLD ej. (.com , .org)
81+
r'(:[0-9]{1,5})?' # Puerto (opcional) ej. :8000
82+
r'(/.*)?$'
83+
)
84+
# reg_pattern = r'^(https?://)?(www\.)?([a-zA-Z0-9.-]+)\.[a-zA-Z]{2,6}(/.*)?$'
85+
86+
return True if re.fullmatch(pattern, url) else False
87+
88+
89+
urls = [
90+
"https://www.google.com", # Válido
91+
"http://example.org", # Válido
92+
"https://sub.dominio.co/path?query=123", # Válido
93+
"ftp://invalid.com", # Inválido (no es HTTP o HTTPS)
94+
"www.nodominio", # Inválido (falta extensión)
95+
"http://localhost:8000", # Valido
96+
]
97+
98+
99+
print("\nValidación de URLs:")
100+
for url in urls:
101+
print(f"{url}: {'Válido' if url_validate(url) else 'Inválido'}")

0 commit comments

Comments
 (0)