W3docs

Quantificatori Regex e Newline in JavaScript

Tutorial avanzato su JavaScript focalizzato sull'uso dei quantificatori nelle espressioni regolari e del carattere speciale newline.

In questa guida esploreremo i potenti quantificatori che consentono di gestire quante volte un pattern deve comparire nelle ricerche testuali. Scopriamo insieme il potenziale dei quantificatori regex per rendere il codice più efficiente ed efficace!

Comprensione dei Quantificatori nelle Espressioni Regolari di JavaScript

I quantificatori nelle espressioni regolari sono strumenti potenti che permettono di specificare quante volte un carattere, un gruppo o una classe di caratteri deve comparire nella stringa di input per costituire una corrispondenza. Ecco una rapida panoramica dei quantificatori più comunemente usati in JavaScript:

  • * (asterisco): corrisponde a 0 o più ripetizioni dell'elemento precedente.
  • + (più): corrisponde a 1 o più ripetizioni dell'elemento precedente.
  • ? (punto interrogativo): corrisponde a 0 o 1 ripetizione dell'elemento precedente.
  • {n}: corrisponde esattamente a n occorrenze dell'elemento precedente.
  • {n,}: corrisponde ad almeno n occorrenze dell'elemento precedente.
  • {n,m}: corrisponde tra n e m occorrenze dell'elemento precedente, inclusi gli estremi.

Un quantificatore si applica sempre al singolo elemento che lo precede — un carattere, un'escape come \d, una classe di caratteri come [a-z], oppure un gruppo come (abc). Non si applica mai all'intero pattern.

Esempio Pratico: Uso del Quantificatore *

javascript— editable

In questo esempio, /A*/i trova zero o più occorrenze di 'A' (senza distinzione tra maiuscole e minuscole), catturando la sequenza "Aaaaaa" all'inizio della stringa. L'asterisco consente la corrispondenza anche se 'A' è assente.

Esempio Pratico: Uso del Quantificatore +

javascript— editable

L'espressione \d+ trova una o più cifre nel testo. Il risultato include 123 e 456 come corrispondenze separate, dimostrando l'utilità di + per catturare numeri completi.

Esempio Pratico: Uso del Quantificatore ?

javascript— editable

Il pattern regex /colou?r/g trova sia "color" che "colour". Il quantificatore ? rende facoltativa la 'u' precedente, permettendo al pattern di corrispondere alla parola indipendentemente dalla presenza della 'u'. Il flag g assicura che vengano trovate tutte le occorrenze nel testo.

Esempio Pratico: Uso del Quantificatore {n}

javascript— editable

\b\d{4}\b trova una sequenza di esattamente quattro cifre, riconoscendo 2022 e 1999 come anni.

Informazione

Considera sempre l'efficienza delle tue espressioni regolari. Pattern inefficienti possono portare a prestazioni lente, specialmente con grandi insiemi di dati. Ottimizza le tue regex evitando quantificatori non necessari e usando quantificatori non-greedy quando applicabile.

Esempio Pratico: Uso del Quantificatore {n,}

javascript— editable

Il pattern \b[a-zA-Z]{5,}\b trova parole composte da almeno cinque lettere. Catturerà fantastic e incredible.

Esempio Pratico: Uso del Quantificatore {n,m}

javascript— editable

Il pattern regex \b[a-zA-Z]{3,6}\b è progettato per trovare parole contenenti tra 3 e 6 lettere, delimitate da confini di parola per garantire che vengano trovate solo parole complete. La regex cattura "See", "the", "big", "tiny", "ant", "and", "old" e "tree". Non corrisponde a "elephant" perché supera le 6 lettere.

Esempio Pratico: Uso del Carattere \n

javascript— editable

La sequenza di escape \n rappresenta un carattere di nuova riga. In un'espressione regolare, corrisponde all'effettivo a-capo nella stringa. Il pattern /line\n/g trova la parola "line" immediatamente seguita da una nuova riga, catturando entrambe le istanze nell'esempio.

I Quantificatori Abbreviati Sono Semplicemente {n,m}

I simboli *, + e ? non sono altro che comodi abbreviazioni della forma {n,m}. Conoscere le equivalenze li rende più facili da ricordare:

  • * equivale a {0,} — zero o più.
  • + equivale a {1,} — uno o più.
  • ? equivale a {0,1} — zero o uno.
javascript— editable

Entrambi i pattern in ciascuna coppia producono lo stesso identico risultato, confermando che i simboli e le forme con le parentesi graffe sono intercambiabili.

I Quantificatori Sono Greedy per Impostazione Predefinita

Per impostazione predefinita un quantificatore è greedy: cattura la maggior quantità possibile di stringa pur permettendo al pattern complessivo di trovare una corrispondenza. Ecco perché un pattern come <.+> ingoia tutto dal primo < fino all'ultimo >, non al primo >.

javascript— editable

Per fermarsi al primo > invece, si aggiunge un ? dopo il quantificatore per renderlo lazy (non-greedy): <.+?>. I quantificatori lazy sono trattati in dettaglio in Quantificatori Greedy e Lazy.

Applicare i Quantificatori a Gruppi e Classi di Caratteri

Un quantificatore ripete solo il singolo token che lo precede. Per ripetere più caratteri come unità, racchiudili in un gruppo di cattura con (...). Per ripetere uno qualsiasi dei caratteri di un insieme, inserisci il quantificatore dopo una classe di caratteri [...].

javascript— editable

Il primo pattern ripete l'intera sequenza (abc) due volte; senza il gruppo, abc{2} ripeterebbe solo la c finale. L'esempio esadecimale ripete la classe [0-9a-f] sei volte, e l'esempio del numero di telefono combina un gruppo ripetuto con {n} su \d.

Per controllare se le corrispondenze sono sensibili alle maiuscole o si estendono su più righe, combina i quantificatori con i flag appropriati descritti in Pattern e Flag.

Conclusione

Comprendere e saper utilizzare efficacemente i quantificatori e il carattere \n in JavaScript può migliorare significativamente le capacità di manipolazione del testo nello sviluppo web. Questi strumenti consentono un potente pattern matching e l'estrazione di dati, rendendo il codice JavaScript più efficiente e le applicazioni più dinamiche e reattive.

Esercitazione

Pratica
In JavaScript, cosa fa il quantificatore '+' quando viene usato in un'espressione regolare?
In JavaScript, cosa fa il quantificatore '+' quando viene usato in un'espressione regolare?
Was this page helpful?