⊗jsSpREHHy 110 of 294 menu

El guion dentro de conjuntos en expresiones regulares JavaScript

El guion - también es un carácter especial dentro de [ ] (pero fuera de ellos - no). Si necesitas el guion como símbolo - colócalo donde no sea interpretado como un separador de rango.

Por qué es importante: puedes crear un rango de caracteres sin darte cuenta. Por ejemplo, así - '[:-@]' - tú crees que estás seleccionando dos puntos, guion y arroba, pero en realidad obtienes un rango de caracteres entre : y @. Este rango incluye los siguientes caracteres: ? < = > : ;

¿De dónde salieron? De la tabla ASCII - los dos puntos tienen un número menor que la arroba - y se forma un rango. Es decir, todos los rangos se forman según la tabla ASCII (si se desea, se puede aprovechar esto).

Cómo solucionarlo: coloca el carácter guion donde definitivamente no sea interpretado como un carácter de rango, por ejemplo, al principio o al final (es decir, después de [ o antes de ]).

También se puede escapar el guion - entonces representará a sí mismo independientemente de la posición. Por ejemplo, en lugar de [:-@] escribir [:\-@] - y ya no habrá un rango, sino tres caracteres - dos puntos, guion y arroba @.

Ejemplo

En el siguiente ejemplo el patrón de búsqueda es: dígito 1, luego letra de 'a' a 'z', luego dígito 2:

let str = '1a2 1-2 1c2 1z2'; let res = str.replace(/1[a-z]2/g, '!');

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

'! 1-2 ! !'

Ejemplo

Ahora escapemos el guion. Como resultado el patrón de búsqueda es: dígito 1, luego letra 'a', o guion, o letra 'z', luego dígito 2:

let str = '1a2 1-2 1c2 1z2'; let res = str.replace(/1[a\-z]2/g, '!');

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

'! ! 1c2 !'

Ejemplo

Se puede simplemente reubicar el guion, sin escaparlo:

let str = '1a2 1-2 1c2 1z2'; let res = str.replace(/1[az-]2/g, '!');

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

'! ! 1c2 !'

Ejemplo

En el siguiente ejemplo el patrón de búsqueda es: primer carácter - letras minúsculas o guion '-', luego dos letras 'x':

let str = 'axx Axx -xx @xx'; let res = str.replace(/[a-z-]xx/g, '!');

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

'! Axx ! @xx'

Ejemplo

En el siguiente ejemplo el patrón de búsqueda es: primer carácter - letras minúsculas, mayúsculas o guion '-', luego dos letras 'x':

let str = 'axx Axx -xx @xx'; let res = str.replace(/[a-zA-Z-]xx/g, '!');

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

'! ! ! @xx'

Ejemplo

Se puede colocar el guion entre dos rangos - allí definitivamente no creará otro rango:

let str = 'axx 9xx -xx @xx'; let res = str.replace(/[a-z-0-9]xx/g, '!');

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

'! ! ! @xx'

Problemas prácticos

Dada la cadena:

let str = 'xaz xBz xcz x-z x@z';

Encuentra todas las cadenas según el siguiente patrón: letra 'x', letra mayúscula o minúscula o guion, letra 'z'.

Dada la cadena:

let str = 'xaz x$z x-z xcz x+z x%z x*z';

Encuentra todas las cadenas según el siguiente patrón: letra 'x', luego signo de dólar, o guion o signo más, luego letra 'z'.

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