⊗jsSpREHHy 110 of 294 menu

Trattino all'interno degli insiemi nelle espressioni regolari JavaScript

Il trattino è anch'esso un carattere speciale all'interno di [ ] (ma all'esterno no). Se avete bisogno del trattino stesso come carattere, mettetelo in una posizione dove non verrà interpretato come separatore di un intervallo.

Perché è importante: potreste creare un intervallo di caratteri senza accorgervene. Ad esempio, in questo modo - '[:-@]' - pensate di selezionare i due punti, il trattino e la chiocciola, ma in realtà ottenete l'intervallo di caratteri tra : e @. In questo intervallo sono inclusi i seguenti caratteri: ? < = > : ;

Da dove vengono? Dalla tabella ASCII - i due punti hanno un numero inferiore rispetto alla chiocciola - e quindi si forma un intervallo. Cioè tutti gli intervalli sono determinati dalla tabella ASCII (volendo, ci si può sfruttare).

Come risolvere il problema: mettete il carattere trattino in una posizione dove sicuramente non verrà interpretato come carattere di intervallo, ad esempio all'inizio o alla fine (cioè dopo [ o prima di ]).

Si può anche escape il trattino - in questo caso indicherà sé stesso indipendentemente dalla posizione. Ad esempio, invece di [:-@] scrivere [:\-@] - e non ci sarà più un intervallo, ma ci saranno tre caratteri - due punti, trattino e chiocciola @.

Esempio

Nel seguente esempio il modello di ricerca è questo: cifra 1, poi una lettera da 'a' a 'z', poi cifra 2:

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

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! 1-2 ! !'

Esempio

Ora escape il trattino. Di conseguenza il modello di ricerca è questo: cifra 1, poi lettera 'a', o trattino, o lettera 'z', poi cifra 2:

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

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! ! 1c2 !'

Esempio

Si può semplicemente spostare il trattino, senza escape:

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

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! ! 1c2 !'

Esempio

Nel seguente esempio il modello di ricerca è questo: il primo carattere è una lettera minuscola o un trattino '-', poi due lettere 'x':

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

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! Axx ! @xx'

Esempio

Nel seguente esempio il modello di ricerca è questo: il primo carattere è una lettera minuscola, maiuscola o un trattino '-', poi due lettere 'x':

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

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! ! ! @xx'

Esempio

Si può posizionare il trattino tra due intervalli - lì sicuramente non creerà un altro intervallo:

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

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! ! ! @xx'

Problemi pratici

Data la stringa:

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

Trovate tutte le stringhe secondo il seguente modello: lettera 'x', lettera maiuscola o minuscola o trattino, lettera 'z'.

Data la stringa:

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

Trovate tutte le stringhe secondo il seguente modello: lettera 'x', poi o dollaro, o trattino o più, poi lettera 'z'.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta