Expresiones regulares

<< Fechas Clases y objetos >>

Las expresiones regulares nos permiten buscar patrones en un string, por tanto buscar el trozo que coincida o cumpla dicha expresión. En JavaScript, podemos crear una expresión regular instanciando un objeto de la clase RegExp o escribiendo directamente la expresión entre dos barras '/'.

Una expresión también puede tener uno o más modificadores como 'g' → Búsqueda global (Busca todas las coincidencias y no sólo la primera), 'i' → Case-insensitive (No distingue entre mayúsculas y minúsculas), o 'm' → Búsqueda en más de una línea (Sólo tiene sentido en cadenas con saltos de línea). En Javascript puedes crear un objeto de expresión regular con estos modificadores de dos formas. Ejemplo:

Métodos para gestionar expresiones regulares

A partir de un objeto RegExp, podemos usar dos métodos para comprobar si una cadena cumple una expresión regular. Los dos métodos son test y exec.

El método test() recibe una cadena e intenta de encontrar una la coincidencia con la expresión regular. Si el modificador global 'g' se especifica, cada vez que se llame al método se ejecutará desde la posición en la que se encontró la última coincidencia, por tanto podemos saber cuántas coincidencias se encuentran. Debemos recordar que si usamos el modificador 'i' no diferencia entre mayúsculas y minúsculas.

Si queremos más detalles sobre las coincidencias, podríamos usar el método exec(). Este método devuelve un objeto con los detalles cuando encuentra alguna coincidencia. Estos detalles incluyen el índice en el que empieza la coincidencia y también el string entero.

Una forma de recorrer las coincidencias sería esta:

De forma similar, hay métodos de la clase String que podemos usar, estos admiten expresiones regulares como parámetros (vamos, a la inversa). Estos métodos son match (Funciona de forma similar a exec) y replace.

El método match devuelve un array con todas las coincidencias encontradas en la cadena si ponemos el modificador global → g, si no ponemos el modificador global, se comporta igual que exec().

El método replace devuelve una nueva cadena con las coincidencias de la expresión regular reemplazadas por la cadena que le pasamos como segundo parámetro (si el modificador global no se especifica, sólo se modifica la primera coincidencia). Podemos enviar una función anónima que procese cada coincidencia encontrada y nos devuelva la cadena con los reemplazos correspondientes.

<< Fechas Clases y objetos >>