Expresiones regulares
Las expresiones regulares (también conocidas como regex) en JavaScript son patrones que se utilizan para buscar y manipular texto de manera eficiente. Son como "plantillas" que te permiten buscar coincidencias dentro de cadenas de texto o realizar reemplazos.
1. Concepto clave: #
Una expresión regular es básicamente una secuencia de caracteres que describe un patrón. Puedes usar ese patrón para encontrar, validar o reemplazar partes de una cadena.
2. Para qué sirven? #
- Buscar coincidencias en una cadena de texto (por ejemplo, buscar todas las veces que aparece una palabra).
- Validar formatos (como si un correo electrónico tiene el formato correcto).
- Reemplazar partes del texto (como cambiar ciertas palabras o caracteres).
3. Cómo se usan en JavaScript? #
En JavaScript, las expresiones regulares se representan entre dos barras inclinadas / y se pueden usar con métodos como test, match, replace, split, entre otros.
Sintaxis básica: #
1const regex = /patrón/;
Métodos más comunes: #
-
test(): Comprueba si una cadena coincide con la expresión regular.1const regex = /hola/; 2const cadena = "hola mundo"; 3console.log(regex.test(cadena)); // true (porque "hola" está en la cadena)Salida de consola true
-
match(): Busca coincidencias en una cadena y devuelve las coincidencias encontradas.1const regex = /hola/; 2const cadena = "hola hola hola"; 3console.log(cadena.match(regex)); // ["hola"] (la primera coincidencia)Salida de consola [ 'hola', index: 0, input: 'hola hola hola', groups: undefined ]
-
replace(): Reemplaza el texto que coincide con el patrón en una cadena.1const regex = /hola/; 2const cadena = "hola mundo"; 3console.log(cadena.replace(regex, "adiós")); // "adiós mundo"Salida de consola adiós mundo
4. Caracteres especiales en expresiones regulares: #
Las expresiones regulares tienen ciertos caracteres especiales que permiten crear patrones más poderosos:
-
. (punto): Representa cualquier carácter.
1const regex = /h.la/; 2console.log(/hola/.test("hola")); // true 3console.log(/h.la/.test("hila")); // trueSalida de consola true true
-
\d: Representa cualquier número (0-9).
1const regex = /\d/; 2console.log(/\d/.test("2023")); // true (porque contiene números) 3console.log(/\d/.test("abc")); // false (no hay números)Salida de consola true false
-
\w: Representa cualquier carácter alfanumérico (letras o números).
1const regex = /\w/; 2console.log(/\w/.test("abc123")); // trueSalida de consola true
-
\s: Representa cualquier espacio en blanco.
1const regex = /\s/; 2console.log(/\s/.test("hola mundo")); // true (hay un espacio entre las palabras)Salida de consola true
-
+: Indica que el carácter o conjunto anterior aparece una o más veces.
1const regex = /ho+la/; 2console.log(/ho+la/.test("hola")); // true 3console.log(/ho+la/.test("hooola")); // trueSalida de consola true true
-
** \ **: Escapa caracteres especiales para tratarlos como texto literal.
1const regex = /\./; // busca literalmente el punto "." 2console.log(/\./.test("a.b.c")); // trueSalida de consola true
-
**^ y ` indica el final.
^abccoincide con cadenas que comienzan con "abc".abc$coincide con cadenas que terminan con "abc".
1const regexInicio = /^hola/; 2console.log(regexInicio.test("hola mundo")); // true 3console.log(regexInicio.test("mundo hola")); // falseSalida de consola true false
1const regexFin = /mundo$/; 2console.log(regexFin.test("hola mundo")); // trueSalida de consola true
5. Ejemplos comunes de uso: #
-
Validar un correo electrónico:
1const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; 2console.log(emailRegex.test("ejemplo@mail.com")); // true 3console.log(emailRegex.test("mail.com")); // falseSalida de consola true false
-
Validar un número de teléfono:
1const telefonoRegex = /^\d{3}-\d{3}-\d{4}$/; 2console.log(telefonoRegex.test("123-456-7890")); // true 3console.log(telefonoRegex.test("1234567890")); // falseSalida de consola true false
-
Encontrar todas las palabras en un texto:
1const texto = "Hola mundo, como estas?"; 2const regex = /\w+/g; // \w+ busca palabras 3console.log(texto.match(regex)); // [ 'Hola', 'mundo', 'como', 'estas' ]Salida de consola [ 'Hola', 'mundo', 'como', 'estas' ]
Resumen del tema
Conceptos clave #
- Patrones de Expresiones Regulares (
RegExp): sintaxis literal delimitada por barras/patron/flagspara validación y manipulación de texto. - Metacaracteres y Clases:
.(cualquier carácter excepto salto de línea),\d(dígitos),\w(alfanumérico),\s(espacios en blanco). - Cuantificadores y Anclas:
+(1 o más),*(0 o más),?(0 o 1),{n,m}(rango),^(inicio de línea) y$(fin de línea). - Métodos Principales:
regex.test(str): devuelve booleano según coincidencia.str.match(regex): extrae coincidencias.str.replace(regex, reemplazo): sustituye patrones en la cadena.
Qué debes recordar #
Usa regex.test() para validaciones de formato (emails, teléfonos) y str.match() o str.replace() para extraer o transformar patrones textuales complejos.