⊗jsSpREESCh 99 of 294 menu

Escapado de caracteres especiales en expresiones regulares de JavaScript

Supongamos que queremos que un carácter especial se represente a sí mismo. Para ello debemos escaparlo usando una barra invertida. Veamos algunos ejemplos.

Ejemplo

En el siguiente ejemplo, el autor de la expresión regular quería que el patrón de búsqueda se viera así: letra 'a', luego un signo más '+', luego letra 'x'. Sin embargo, el autor del código no escapó el carácter '+' y por lo tanto el patrón de búsqueda en realidad se ve así: letra 'a' una o más veces, luego letra 'x':

let str = 'a+x ax aax aaax'; let res = str.replace(/a+x/g, '!');

Como resultado, en la variable se guardará lo siguiente:

'a+x ! ! !'

Ejemplo

Y ahora el autor escapó el signo más con una barra invertida. Ahora el patrón de búsqueda se ve como debería: letra 'a', luego signo más '+', luego letra 'x'.

let str = 'a+x ax aax aaax'; let res = str.replace(/a\+x/g, '!');

Como resultado, en la variable se guardará lo siguiente:

'! ax aax aaax'

Ejemplo

En este ejemplo, el patrón se ve así: letra 'a', luego un punto '.', luego letra 'x':

let str = 'a.x abx azx'; let res = str.replace(/a\.x/g, '!');

Como resultado, en la variable se guardará lo siguiente:

'! abx azx'

Ejemplo

En el siguiente ejemplo, el autor olvidó escapar el punto y bajo la expresión regular cayeron todas las subcadenas, ya que un punto sin escapar representa cualquier carácter:

let str = 'a.x abx azx'; let res = str.replace(/a.x/g, '!');

Como resultado, en la variable se guardará lo siguiente:

'! ! !'

Observación

Preste atención a que si olvida la barra invertida para el punto (cuando este debe representarse a sí mismo) - esto puede pasar inadvertido:

'a.x'.replace(/a.x/g, '!'); // devuelve '!', como queríamos

Visualmente funciona correctamente (ya que el punto representa cualquier carácter, incluyendo un punto normal '.'). Pero si cambiamos la cadena en la que se realizan los reemplazos, veremos nuestro error:

'a.x abx azx'.replace(/a.x/g, '!'); // devuelve '! ! !', pero se esperaba '! abx azx'

Lista de caracteres especiales y ordinarios

Si se escapa un carácter ordinario, no pasará nada grave; seguirá representándose a sí mismo. La excepción son los dígitos, no se pueden escapar.

A menudo surge la duda de si un determinado carácter es especial. Algunos llegan al extremo de escapar todos los caracteres sospechosos seguidos. Sin embargo, esta es una mala práctica (ensucia la expresión regular con barras invertidas).

Son caracteres especiales: $ ^ . * + ? \ / {} [] () |

No son caracteres especiales: @ : , ' " ; - _ = < > % # ~ `& !

Problemas prácticos

Dada la cadena:

let str = 'a.a aba aea';

Escriba una expresión regular que encuentre la cadena 'a.a', sin capturar las demás.

Dada la cadena:

let str = '2+3 223 2223';

Escriba una expresión regular que encuentre la cadena '2+3', sin capturar las demás.

Dada la cadena:

let str = '23 2+3 2++3 2+++3 345 567';

Escriba una expresión regular que encuentre las cadenas '2+3', '2++3', '2+++3', sin capturar las demás (el + puede aparecer cualquier cantidad de veces).

Dada la cadena:

let str = '23 2+3 2++3 2+++3 445 677';

Escriba una expresión regular que encuentre las cadenas '23', '2+3', '2++3', '2+++3', sin capturar las demás.

Dada la cadena:

let str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';

Escriba una expresión regular que encuentre las cadenas '*q+', '*qq+', '*qqq+', sin capturar las demás.

Dada la cadena:

let str = '[abc] {abc} abc (abc) [abc]';

Escriba una expresión regular que encuentre las cadenas entre corchetes y las reemplace por '!'.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar