Expresiones regulares

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Curso de Javascript Online. Desde cero.

12.  
15.  
20.  
26.  
27.  
36.  

Nos permiten buscar patrones dentro de una cadena de texto.

En Javascript, las expresiones regulares empiezan y terminan por una barra:

/expresion/

La función test nos devuelve si hay coincidencia o no:

var expresion = new RegExp(/amor/);
const r1 = expresion.test("Busco amor");
const r2 = expresion.test("No busco nada");

console.log(r1); // true
console.log(r2); // false

La función match nos devuelve un array con información acerca de las ocurrencias que ha habido:

const expresion = new RegExp(/amor/);
const r1 = "Busco amor, amor".match(expresion);
const r2 = "No busco nada".match(expresion);

console.log(r1); // ["amor"]
console.log(r2); // null

Si usamos el modificador /g (global), nos mostrará información de todas las ocurrencias.

const expresion = new RegExp(/amor/g);
const r1 = "Busco amor, amor".match(expresion);
const r2 = "No busco nada".match(expresion);

console.log(r1); // ["amor", "amor"]
console.log(r2); // null

Utilizando el modificador /i (insensitive) podremos no tener en cuenta si el resultado de la comparación son mayúsculas o minúsculas:

const r1 = "Busco amor, Amor".match(/amor/g);
console.log(r1); // ["amor"]
const r1 = "Busco amor, Amor".match(/amor/gi);
console.log(r1); // ["amor", "Amor"]

Para buscar letras o símbolos concretos, usaremos corchetes:

const r1 = "Busco amor, Amor".match(/[ao]/g);
console.log(r1); // ["o", "a", "o", "o"]

Lo anterior también es aplicable a un rango:

const r1 = "123456789".match(/[1-3]/g);
console.log(r1); // ["1", "2", "3"]

También podemos detectar cuando no se cumple la búsqueda con el símbolo ^:


const r1 = "amor".match(/[^a]/g);

console.log(r1); // ["m", "o", "r"]
const r1 = "r25".match(/[^1-3]/g);
console.log(r1); // ["rm", "5"]

Usar un punto (.) significa «cualquier caracter»:

const r1 = "ana".match(/./g);

console.log(r1); // ["a", "n", "a"]

Para encontrar cualquier tipo de dígito usaremos \d:

const r1 = "ana".match(/.a/g);

console.log(r1); // ["na"]

Con \d podemos referenciar cualquier tipo de dígitos:

const r1 = "r2d2".match(/\d/g);

console.log(r1); // ["2", "2"]

Y con \D invertiremos la búsqueda anterior:

const r1 = "r2d2".match(/\D/g);
console.log(r1); // ["r", "d"]

Para buscar letras que no sean símbolos ni caracters compuestos (á, ä, à…):

const r1 = "&%aá".match(/\w/g);

console.log(r1); // ["a"]

Para buscar una cadena al principio de una cadena:

const r1 = "aabbcc".match(/\baa/g);

console.log(r1); // ["aa"]

Y para buscarla al final:

const r1 = "aabbcc".match(/cc\b/g);
console.log(r1); // ["cc"]

Para buscar ab y luego c al menos una vez:

const r1 = "abcoooabccccc".match(/abc+/g);

console.log(r1); // ["abc", "abccccc"]

Mientras que el anterior símbolo de suma significaba «al menos una coincidencia» el símbolo de multiplicación significa «entre 0 o más coincidencias»:

const r1 = "aboooabccccc".match(/abc*/g);

console.log(r1); // ["ab", "abccccc"]

Lo mismo de antes, pero ahora entre 0 y 1 ocurrencia:

const r1 = "aboabcooabcc".match(/abc?/g);

console.log(r1); // ["ab", "abc", "abc"]

Para hacer una búsqueda de un patrón una determinada cantidad de veces:


const r1 = "abcabc-abc-abcabc".match(/(abc){2}/g);

console.log(r1); // ["abc", "abc"]
← Import, export
Extras del curso de Javascript →