Saltar al contenido principal
eLearner.app
Módulo 1 · Lección 4 de 44/32 en el curso~10 min
Lecciones del módulo (4/4)

Escape de metacaracteres

Algunos caracteres en las regex tienen un significado especial: se llaman metacaracteres. Si quieres coincidir con el carácter literal (ej. un . real, un + real, un paréntesis real) debes antecederlos con una barra diagonal inversa o contra-barra \, lo que los escapa.

Los metacaracteres a recordar son doce:

Code
.  *  +  ?  ^  $  |  \  (  )  [  ]  {  }  /

(La / no es realmente un metacarácter del motor, pero debe escaparse en la notación literal de JavaScript /.../.)

Code
Pattern: \$\d+\.\d\d
Sample:  Prezzi: $9.99, $12.50, totale $22.49.
                 ^^^^^  ^^^^^^         ^^^^^^

Aquí escapamos $ (ancla de fin de cadena) y . (comodín) para coincidir con los caracteres literales en el formato de precio "dólar + número + punto + dos dígitos".

Doble barra inversa en cadenas JS

Cuando escribes un patrón dentro de una cadena de JavaScript (como lo haces en nuestros ejercicios), la barra inversa debe estar duplicada. La cadena JS '\\d' contiene dos caracteres (\ y d) y es exactamente el patrón regex \d.

JS
const re1 = /\d+/; // notación literal: una sola barra inversa
const re2 = new RegExp('\\d+'); // cadena: doble barra inversa

El editor del curso muestra el patrón ya decodificado (ves una sola \d); no tienes que duplicar nada tú mismo.

Los 12 metacaracteres especiales

Los caracteres con significados especiales en el motor son exactamente 12: \\ ^ $ . | ? * + ( ) [ {. Si deseas que coincidan como texto literal, debes precederlos con una barra inversa. En algunos entornos (como cadenas JS no crudas), es posible que debas duplicar la barra inversa (\\\\).

Pruébalo tú

Ejercicio#regex.m1.l4.e1
Intentos: 0Cargando...

Encuentra cada precio en el formato `$N.NN` (dólar, uno o más dígitos, punto, dos dígitos). Recuerda escapar `$` y `.`.

Cargando editor...
Mostrar pista

$ debe escaparse como \$, el punto como \. - de lo contrario, el punto coincide con cualquier cosa.

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#regex.m1.l4.e2
Intentos: 0Cargando...

Encuentra cada signo de interrogación literal `?` en el texto. `?` es un metacarácter: debe ser escapado.

Cargando editor...
Mostrar pista

Sin el escape, ? sería un cuantificador (módulo 2). Pon una \ delante.

Solución disponible después de 3 intentos

Desafío adicional

Ejercicio#regex.m1.l4.e3
Intentos: 0Cargando...

Encuentra todas las apariciones de `.tar.gz` en el texto, asegurándote de que los puntos coincidan literalmente.

Cargando editor...
Mostrar pista

Inserta una barra inversa antes de cada punto para escaparlo.

Solución disponible después de 3 intentos