⊗jsSpREHHy 110 of 294 menu

Hífen dentro de conjuntos em expressões regulares JavaScript

O hífen - também é um caractere especial dentro de [ ] (mas fora deles - não é). Se você precisa do próprio hífen como um caractere - coloque-o em uma posição onde ele não será interpretado como um separador de intervalo.

Por que isso é importante: você pode criar um intervalo de caracteres sem perceber. Por exemplo, assim - '[:-@]' - você acha que está selecionando dois-pontos, hífen e arroba, mas na verdade, obtém-se um intervalo de caracteres entre : e @. Este intervalo inclui os seguintes caracteres: ? < = > : ;

De onde eles vêm? Da tabela ASCII - o dois-pontos tem um número menor que o da arroba - e assim forma-se um intervalo. Ou seja, todos os intervalos são formados de acordo com a tabela ASCII (se desejar, pode-se usar isso a seu favor).

Como lidar com isso: coloque o caractere hífen onde ele certamente não será interpretado como um caractere de intervalo, por exemplo, no início ou no final (ou seja, depois de [ ou antes de ]).

Também é possível escapar o hífen - então ele representará a si mesmo, independentemente da posição. Por exemplo, em vez de [:-@], escreva [:\-@] - e não haverá mais um intervalo, mas sim três caracteres - dois-pontos, hífen e arroba @.

Exemplo

No exemplo a seguir, o padrão de busca é: dígito 1, depois uma letra de 'a' a 'z', depois o dígito 2:

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

Como resultado, o seguinte será armazenado na variável:

'! 1-2 ! !'

Exemplo

Agora vamos escapar o hífen. Como resultado, o padrão de busca é: dígito 1, depois a letra 'a', ou hífen, ou a letra 'z', depois o dígito 2:

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

Como resultado, o seguinte será armazenado na variável:

'! ! 1c2 !'

Exemplo

É possível simplesmente reposicionar o hífen, sem escapá-lo:

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

Como resultado, o seguinte será armazenado na variável:

'! ! 1c2 !'

Exemplo

No exemplo a seguir, o padrão de busca é: o primeiro caractere é letras minúsculas ou hífen '-', depois duas letras 'x':

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

Como resultado, o seguinte será armazenado na variável:

'! Axx ! @xx'

Exemplo

No exemplo a seguir, o padrão de busca é: o primeiro caractere é letras minúsculas, letras maiúsculas ou hífen '-', depois duas letras 'x':

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

Como resultado, o seguinte será armazenado na variável:

'! ! ! @xx'

Exemplo

É possível colocar o hífen entre dois intervalos - lá ele certamente não criará outro intervalo:

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

Como resultado, o seguinte será armazenado na variável:

'! ! ! @xx'

Problemas práticos

Dada a string:

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

Encontre todas as strings seguindo o padrão: letra 'x', letra maiúscula ou minúscula ou hífen, letra 'z'.

Dada a string:

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

Encontre todas as strings seguindo o padrão: letra 'x', depois ou cifrão, ou hífen ou sinal de mais, depois letra 'z'.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar