1+ /* 🔥 EJERCICIO:
2+ Utilizando tu lenguaje, explora el concepto de expresiones regulares,
3+ creando una que sea capaz de encontrar y extraer todos los números
4+ de un texto.
5+ */
6+ const texto = "El precio es de 123 euros, pero con un descuento del 15%. Además, hay 4 productos disponibles." ;
7+
8+ // Expresión regular para encontrar números
9+ const regexNumeros = / \d + / g;
10+
11+ // Extraer números del texto
12+ const numeros = texto . match ( regexNumeros ) ;
13+
14+ console . log ( "Números encontrados:" , numeros ) ;
15+ // Números encontrados: (3) ['123', '15', '4']
16+
17+ /*
18+ Dictionary 📗 [ /\d+/g ] = {
19+ \d: Coincide con cualquier dígito (0-9).
20+ +: Indica que debe coincidir con uno o más dígitos consecutivos.
21+ g: Modificador global que busca todas las coincidencias en el texto (no solo la primera).
22+ }
23+ */
24+ //------------------------------------------------------------------------------------------------------------
25+ //------------------------------------------------------------------------------------------------------------
26+
27+ /* 🔥 DIFICULTAD EXTRA (opcional):
28+ Crea 3 expresiones regulares (a tu criterio) capaces de:
29+ - Validar un email.
30+ - Validar un número de teléfono.
31+ - Validar una url.
32+ */
33+
34+ function validarEmail ( email ) {
35+ const regexEmail = / ^ [ a - z A - Z 0 - 9 . _ % + - ] + @ [ a - z A - Z 0 - 9 . - ] + \. [ a - z A - Z ] { 2 , } $ / ;
36+ return regexEmail . test ( email ) ;
37+ }
38+
39+ function validarTelefono ( telefono ) {
40+ const regexTelefono = / ^ \+ ? \d { 1 , 3 } ?[ - . \s ] ? \( ? \d { 1 , 4 } \) ? [ - . \s ] ? \d { 1 , 4 } [ - . \s ] ? \d { 1 , 9 } $ / ;
41+ return regexTelefono . test ( telefono ) ;
42+ }
43+
44+ function validarURL ( url ) {
45+ const regexURL = / ^ ( h t t p s ? : \/ \/ ) ? ( [ a - z A - Z 0 - 9 . - ] + \. [ a - z A - Z ] { 2 , } ) ( \/ .* ) ? $ / ;
46+ return regexURL . test ( url ) ;
47+ }
48+
49+ console . log ( "¿Es válido el email 'usuario@example.com'?" , validarEmail ( "usuario@example.com" ) )
50+ console . log ( "¿Es válido el email 'usuario@.com'?" , validarEmail ( "usuario@.com" ) )
51+ // ¿Es válido el email 'usuario@example.com'? true
52+ // ¿Es válido el email 'usuario@.com'? false
53+
54+ console . log ( "¿Es válido el teléfono '+51-999-999-999'?" , validarTelefono ( "+51-999-999-999" ) )
55+ console . log ( "¿Es válido el teléfono '123'?" , validarTelefono ( "123" ) )
56+ // ¿Es válido el teléfono '+51-999-999-999'? true
57+ // ¿Es válido el teléfono '123'? false
58+
59+ console . log ( "¿Es válida la URL 'https://www.example.com'?" , validarURL ( "https://www.example.com" ) )
60+ console . log ( "¿Es válida la URL 'www.example'?" , validarURL ( "www.example" ) )
61+ // ¿Es válida la URL 'https://www.example.com'? true
62+ // ¿Es válida la URL 'www.example'? true
63+
64+
65+ /*
66+ Dictionary 📗 [ expresiones regulares ] = {
67+ regexEmail : {
68+ ^[a-zA-Z0-9._%+-]+: Parte local del email (antes del @), permite letras, números y caracteres especiales como ., _, %, +, -.
69+ @[a-zA-Z0-9.-]+: Dominio del email, permite letras, números, puntos (.) y guiones (-).
70+ \.[a-zA-Z]{2,}$: Extensión del dominio (ejemplo: .com, .es), debe tener al menos 2 caracteres.
71+ }
72+ regexTelefono : {
73+ ^\+?: Opcionalmente comienza con un + (indicador de país).
74+ \d{1,3}?: Código de país (1 a 3 dígitos).
75+ [-.\s]?: Separadores opcionales (-, ., espacio).
76+ \(?\d{1,4}\)?: Código de área opcionalmente entre paréntesis.
77+ \d{1,4}[-.\s]?\d{1,4}[-.\s]?\d{1,9}$: Número principal, separado en partes.
78+ }
79+ regexURL : {
80+ ^(https?:\/\/)?: Protocolo opcional (http:// o https://).
81+ [a-zA-Z0-9.-]+\.[a-zA-Z]{2,}: Dominio y extensión (ejemplo: example.com).
82+ (\/.*)?$: Ruta opcional después del dominio.
83+ }
84+ }
85+ */
0 commit comments