Las expresiones regulares tienen muchos usos, pero la mayoría de las veces sólo vas a hacer dos cosas:
- Comprobar si una cadena cumple el patrón
- Extraer subcadenas de la cadena de origen
Voy a ilustrar en un par de ejemplos cómo se usa el objeto RegExp de JavaScript, el cual nos permite usar expresiones regulares.
Crear un objeto RegExp
Veamos primero cómo se construye un objeto RegExp. Hay dos formas:
Forma tradicional
El RegExp se puede crear mediante un constructor, como cualquier otro objeto. Los argumentos del constructor son dos strings: el patrón y los modificadores. Un ejemplo:
var expression = new RegExp('^.* prueba$', 'i');
El modificador usado es el case insensitive.
La gran ventaja de este sistema es que el patrón se crea con un string, lo cual permite crear el patrón de forma dinámica.
Forma simplificada
Otra forma de crear un objeto RegExp es mediante una estructura del tipo: /patrón/modificadores. Por ejemplo:
var expression = /^.* prueba$/i;
Comprobar si una cadena cumple el patrón
La mayoría de las veces sólo queremos saber si una cadena cumple un patrón. Para ello, contamos con el método Test de RegExp, que devolerá true o false según se cumpla el patrón o no:
var expression = /^.* prueba$/i; var str = 'Esto es una prueba'; expression.test(str); // true
Extraer subcadenas de la cadena de origen
Con las expresiones regulares también es posible extraer trozos de la cadena original. Para ello, se deben definir grupos en el patrón mediante el uso de paréntesis.
El método exec de RegExp nos retornará un array con todos los valores extraídos, y es nuestra responsabilidad saber qué índice del array ocupará el valor que buscamos. Hay que tener en cuenta que el índice 0 siempre será la cadena original.
var expression = /^.* (.*)$/i; var str = 'Esto es una prueba'; expression.exec(str); // ['Esto es una prueba', 'prueba']
Una mención especial al método Replace
Con lo anterior ya he cubierto los usos más interesantes de RegExp, pero el método Replace del objeto String merece una mención especial, ya que se vuelve mucho más potente si lo usamos con objetos RegExp. Podéis consultarlo aquí: Metodo Replace.