W3docs

Set e Intervalli nelle Regex JavaScript

Le espressioni regolari in JavaScript sono uno strumento potente per l'elaborazione del testo. Scopri set e intervalli nelle regex per validare e manipolare le stringhe.

Le espressioni regolari (regex) in JavaScript sono uno strumento potente per l'elaborazione e la manipolazione del testo. Un set di caratteri (o classe di caratteri) consente di dire "abbina uno qualsiasi di questi caratteri" in una singola posizione all'interno della stringa — un elemento di base a cui si ricorre costantemente per validare l'input, analizzare testo o pulire dati.

Questa guida tratta i set [...], gli intervalli come [a-z0-9], la negazione [^...], come eseguire l'escape dei caratteri speciali all'interno di un set, e come i set si combinano con le classi abbreviate come \w e \d. Ogni esempio è eseguibile, così puoi verificare l'output direttamente.

Introduzione ai Set nelle Regex

Un set in un'espressione regolare specifica un gruppo di caratteri, uno qualsiasi dei quali può corrispondere a una determinata posizione nella stringa di ricerca. I set si scrivono tra parentesi quadre []. Un aspetto fondamentale: un set abbina esattamente un carattere[abc] abbina una singola a, b o c, non la stringa "abc".

Set di Base

Ad esempio, il set [abc] abbinerà qualsiasi singolo carattere che sia a, b o c. Con il flag globale g, match() restituisce ogni carattere trovato:

javascript— editable

Set Negati

Per creare un set negato che abbini qualsiasi carattere non elencato, inserisci un accento circonflesso ^ immediatamente dopo la parentesi aperta. Ad esempio, [^abc] abbina qualsiasi singolo carattere eccetto a, b o c. Il ^ ha questo significato speciale solo nella prima posizione; in qualsiasi altra posizione è un accento circonflesso letterale.

javascript— editable

Comprensione degli Intervalli

All'interno di un set puoi scrivere un intervallo con un trattino — inizio-fine — invece di elencare ogni singolo carattere. Un intervallo abbina qualsiasi carattere il cui code point si trova tra i due estremi, inclusi. Questo mantiene i pattern brevi e leggibili.

Intervalli Numerici

Ad esempio, [0-9] rappresenta qualsiasi cifra da 0 a 9. Aggiungendo + si abbinano una o più cifre consecutive, quindi le cifre adiacenti vengono raggruppate in una singola corrispondenza:

javascript— editable

Intervalli Alfabetici

Allo stesso modo, [a-z] abbina qualsiasi lettera minuscola e [A-Z] qualsiasi lettera maiuscola. Puoi inserire più intervalli in un solo set — [A-Za-z0-9] copre lettere e cifre — per abbinare più tipi di caratteri contemporaneamente:

javascript— editable

Un caso d'uso comune nel mondo reale è un controllo di base degli identificatori, dove il primo carattere deve essere una lettera e i successivi possono essere lettere, cifre o underscore:

javascript— editable

Uso Avanzato di Set e Intervalli

Puoi inserire classi abbreviate direttamente in un set accanto a caratteri letterali e intervalli. Le abbreviazioni si comportano allo stesso modo all'interno di [...] come lo fanno al di fuori:

  • \d — una cifra, equivalente a [0-9]
  • \w — un carattere "parola": [A-Za-z0-9_]
  • \s — spazio bianco (spazio, tabulazione, nuova riga, …)

Quindi [\d.] significa "una cifra o un punto", e [\w-] significa "un carattere parola o un trattino". Consulta Classi di caratteri per l'elenco completo e le forme negate in maiuscolo (\D, \W, \S).

Esempio: Combinare Caratteri Parola e Simboli Speciali

Ecco un caso pratico: mantenere i caratteri parola e un segno di punteggiatura specifico, ignorando tutto il resto.

javascript— editable

Qui, \w copre tutte le lettere, le cifre e l'underscore. Aggiungendo ! al set si abbina anche il punto esclamativo, che \w non include. Questo è utile quando si vuole consentire alcuni simboli specifici senza aprire la corrispondenza a tutta la punteggiatura.

Unicode e Supporto Multilingua

Gli intervalli come [a-z] coprono solo le lettere ASCII — non includono caratteri accentati e non latini. Per abbinare lettere in qualsiasi lingua, usa le escape di proprietà Unicode (ECMAScript 2018+) insieme al flag u. Ad esempio, \p{L} abbina qualsiasi tipo di lettera da qualsiasi script:

javascript— editable

Il flag u è necessario affinché \p{...} funzioni. Scopri di più in Il flag unicode "u" e la classe \p{...} e nella panoramica di Pattern e flag.

Esclusione di Intervalli nelle Espressioni Regolari

La negazione funziona anche con gli intervalli. [^0-9] abbina qualsiasi carattere che non sia una cifra, e puoi combinare intervalli e singoli caratteri dopo il cursore. Un'operazione frequente è eliminare o trovare tutto ciò che non appartiene a un gruppo consentito — in questo caso, ogni carattere che non è una vocale (il flag i rende il confronto case-insensitive):

Esempio di Esclusione di Intervalli

javascript— editable

Questa regex troverà tutti i caratteri non-vocali, inclusa la punteggiatura e gli spazi. È un modo efficace per filtrare i caratteri indesiderati da una stringa.

Escape dei Caratteri Speciali nei Set

All'interno di un set, molti meno caratteri sono speciali rispetto a fuori. Devi preoccuparti solo di quattro: la parentesi quadra di chiusura ], il backslash \, l'accento circonflesso ^ (speciale solo all'inizio) e il trattino - (speciale solo tra due caratteri). Esegui l'escape di ognuno con un backslash per usarli letteralmente.

Una scorciatoia utile: un trattino viene trattato come letterale se è il primo o l'ultimo carattere nel set, quindi [-+] e [a-z-] non necessitano di escape. Allo stesso modo, i caratteri speciali fuori da un set — come ., *, +, (, ) — perdono il loro significato all'interno e vengono abbinati letteralmente, quindi [.+] abbina semplicemente un punto o un più.

Esempio di Escape dei Caratteri Speciali

javascript— editable

Qui le parentesi vengono precedute da escape in modo che vengano lette come caratteri letterali invece di aprire e chiudere un set. Il prossimo esempio mostra insieme la regola del trattino-come-letterale e la regola del punto-che-perde-il-suo-potere:

javascript— editable

Conclusione

Padroneggiare set e intervalli nelle regex JavaScript non solo migliora le capacità di manipolazione delle stringhe, ma porta anche a un codice più pulito ed efficiente. Sono particolarmente potenti per analizzare testo, validare l'input ed elaborare dati nello sviluppo web.

Pratica

Pratica
Quali sono le caratteristiche e le funzionalità di Set e Intervalli in JavaScript?
Quali sono le caratteristiche e le funzionalità di Set e Intervalli in JavaScript?
Was this page helpful?