Expresiones regulares

Curso de Javascript Online. Desde cero.

14.  
19.  
25.  
34.  

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

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"]

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