1+ // Ejercicio de Expresiones Regulares en JavaScript
2+
3+ // Texto de ejemplo para probar todas las expresiones regulares
4+ const textoEjemplo = `Hola, tengo 25 años y mi número de teléfono es 123-456-789.
5+ También puedes contactarme al +34 611 222 333 o por email a [email protected] . 6+ Visita mi página web en https://www.ejemplo.com para más información.
7+ Hay 42 razones para usar expresiones regulares y 100 formas de aplicarlas.` ;
8+
9+ /**
10+ * 1. Función para encontrar y extraer todos los números de un texto
11+ * Utiliza la expresión regular \b\d+\b que significa:
12+ * \b - límite de palabra
13+ * \d+ - uno o más dígitos
14+ * \b - otro límite de palabra
15+ */
16+ function extraerNumeros ( texto ) {
17+ const patron = / \b \d + \b / g;
18+ const numerosEncontrados = texto . match ( patron ) ;
19+
20+ console . log ( '1. Números encontrados:' ) ;
21+ numerosEncontrados . forEach ( numero => console . log ( numero ) ) ;
22+ }
23+
24+ /**
25+ * 2. Función para validar un email
26+ * Utiliza una expresión regular que verifica:
27+ * ^ - inicio de la cadena
28+ * [\w.-]+ - uno o más caracteres de palabra, puntos o guiones
29+ * @ - símbolo @
30+ * [\w-]+ - uno o más caracteres de palabra o guiones
31+ * \. - un punto literal
32+ * [\w-]+ - dominio de nivel superior
33+ * (\.[a-zA-Z]{2,})?$ - opcional: punto seguido de 2 o más letras, fin de cadena
34+ */
35+ function validarEmail ( email ) {
36+ const patronEmail = / ^ [ \w . - ] + @ [ \w - ] + \. [ \w - ] + ( \. [ a - z A - Z ] { 2 , } ) ? $ / ;
37+ return patronEmail . test ( email ) ;
38+ }
39+
40+ /**
41+ * 3. Función para validar un número de teléfono
42+ * Acepta formatos:
43+ * - 123-456-789
44+ * - +34 611 222 333
45+ */
46+ function validarTelefono ( telefono ) {
47+ const patronTelefono = / ^ ( \+ \d { 1 , 3 } \s ? ) ? ( \d { 3 } [ - \s ] ? ) { 2 } \d { 3 } $ / ;
48+ return patronTelefono . test ( telefono ) ;
49+ }
50+
51+ /**
52+ * 4. Función para validar una URL
53+ * Acepta URLs que:
54+ * - Comienzan con http:// o https://
55+ * - Pueden tener www. (opcional)
56+ * - Tienen un dominio y una extensión válida
57+ */
58+ function validarURL ( url ) {
59+ const patronURL = / ^ ( h t t p s ? : \/ \/ ) ( w w w \. ) ? [ \w - ] + ( \. [ a - z A - Z ] { 2 , } ) + $ / ;
60+ return patronURL . test ( url ) ;
61+ }
62+
63+ // Pruebas
64+ console . log ( '\n=== PRUEBAS DE EXPRESIONES REGULARES ===' ) ;
65+
66+ // 1. Extraer números
67+ extraerNumeros ( textoEjemplo ) ;
68+
69+ // 2. Validar emails
70+ console . log ( '\n2. Validación de emails:' ) ;
71+ const emails = [ '[email protected] ' , 'email_invalido.com' , '[email protected] ' ] ; 72+ emails . forEach ( email => {
73+ console . log ( `${ email } es válido:` , validarEmail ( email ) ) ;
74+ } ) ;
75+
76+ // 3. Validar números de teléfono
77+ console . log ( '\n3. Validación de números de teléfono:' ) ;
78+ const telefonos = [ '123-456-789' , '+34 611 222 333' , '1234' , '999-999-999' ] ;
79+ telefonos . forEach ( telefono => {
80+ console . log ( `${ telefono } es válido:` , validarTelefono ( telefono ) ) ;
81+ } ) ;
82+
83+ // 4. Validar URLs
84+ console . log ( '\n4. Validación de URLs:' ) ;
85+ const urls = [ 'https://www.ejemplo.com' , 'http://ejemplo' , 'https://dominio.es' ] ;
86+ urls . forEach ( url => {
87+ console . log ( `${ url } es válida:` , validarURL ( url ) ) ;
88+ } ) ;
0 commit comments