Vai al contenuto

Spiegazione di un’espressione regolare

Regex Explainer

Scompone un’espressione regolare in un albero con le etichette, così puoi leggere che cosa cattura davvero ogni pezzo.

Scompone un’espressione regolare in un albero e dice che cosa fa ogni pezzo — ogni gruppo, quantificatore, classe e asserzione, annidati come lo è il pattern. È la stessa schermata del tester, aperta sulla sua scheda di spiegazione, perché leggere un pattern ed eseguirlo sono la stessa attività.

🔒 Funziona interamente nel tuo browserregexexplainlearn
Vista

Pattern

//g

può corrispondere ovunque nella stringa, 2 gruppi di cattura.

Che cosa fa ogni pezzo

([\w.+-]+)@([\w-]+\.[\w.-]+)In ordine

Ognuno di questi deve corrispondere, uno dopo l’altro, senza nulla in mezzo.

([\w.+-]+)Gruppo di cattura 1

Corrisponde al pattern al suo interno e ricorda il testo, disponibile come `match[1]` e come `$1` in una sostituzione.

[\w.+-]+Ripetuto +

Ripete una o più volte, il più possibile, e cede solo quando il resto fallisce.

[\w.+-]Un carattere qualsiasi di questo insieme

Corrisponde esattamente a un carattere, quello fra i seguenti che nell’input viene per primo.

Dentro una classe, `.` è un punto fermo. Qui non vuol dire «qualsiasi carattere», e proteggerlo non cambia nulla.

\wUn carattere di parola qualsiasi

Esattamente `[A-Za-z0-9_]`.

Questo è solo ASCII. Per un’espressione regolare JavaScript `é`, `한` e `ß` non sono caratteri di parola, quindi `\w+` non corrisponde a una parola coreana né a una accentata.

.Il carattere “.” (U+002E)

Viene confrontato esattamente, maiuscole e minuscole comprese.

+Il carattere “+” (U+002B)

Viene confrontato esattamente, maiuscole e minuscole comprese.

-Il carattere “-” (U+002D)

Viene confrontato esattamente, maiuscole e minuscole comprese.

@Il carattere “@” (U+0040)

Viene confrontato esattamente, maiuscole e minuscole comprese.

([\w-]+\.[\w.-]+)Gruppo di cattura 2

Corrisponde al pattern al suo interno e ricorda il testo, disponibile come `match[2]` e come `$2` in una sostituzione.

[\w-]+\.[\w.-]+In ordine

Ognuno di questi deve corrispondere, uno dopo l’altro, senza nulla in mezzo.

[\w-]+Ripetuto +

Ripete una o più volte, il più possibile, e cede solo quando il resto fallisce.

[\w-]Un carattere qualsiasi di questo insieme

Corrisponde esattamente a un carattere, quello fra i seguenti che nell’input viene per primo.

\wUn carattere di parola qualsiasi

Esattamente `[A-Za-z0-9_]`.

Questo è solo ASCII. Per un’espressione regolare JavaScript `é`, `한` e `ß` non sono caratteri di parola, quindi `\w+` non corrisponde a una parola coreana né a una accentata.

-Il carattere “-” (U+002D)

Viene confrontato esattamente, maiuscole e minuscole comprese.

\.Il carattere “.” (U+002E)

Viene confrontato esattamente, maiuscole e minuscole comprese.

Qui la barra rovesciata è di troppo: in questa posizione il carattere non ha alcun significato speciale.

[\w.-]+Ripetuto +

Ripete una o più volte, il più possibile, e cede solo quando il resto fallisce.

[\w.-]Un carattere qualsiasi di questo insieme

Corrisponde esattamente a un carattere, quello fra i seguenti che nell’input viene per primo.

Dentro una classe, `.` è un punto fermo. Qui non vuol dire «qualsiasi carattere», e proteggerlo non cambia nulla.

\wUn carattere di parola qualsiasi

Esattamente `[A-Za-z0-9_]`.

Questo è solo ASCII. Per un’espressione regolare JavaScript `é`, `한` e `ß` non sono caratteri di parola, quindi `\w+` non corrisponde a una parola coreana né a una accentata.

.Il carattere “.” (U+002E)

Viene confrontato esattamente, maiuscole e minuscole comprese.

-Il carattere “-” (U+002D)

Viene confrontato esattamente, maiuscole e minuscole comprese.

Flag

g — global
Trova tutte le corrispondenze invece di fermarsi alla prima. In cambio `.test()` ed `.exec()` spostano `lastIndex` tra una chiamata e l’altra, che è la causa abituale del «una chiamata sì e una no».

Come si usa

  1. Incollare il pattern che si è ereditato

    Quello nel file di configurazione che nessuno ricorda di aver scritto. Viene analizzato, non riconosciuto per somiglianza, quindi la scomposizione segue la struttura vera.

  2. Leggere l’albero dall’alto in basso

    Ogni nodo mostra il frammento di origine, che cosa è e che cosa fa. Le note segnalano i punti che sorprendono più spesso — un quantificatore annidato, un gruppo che cattura senza averne bisogno.

  3. Passare a Test per verificare la propria lettura

    Il pattern viene trasferito. Capire una regex e confermare che faccia quello che si crede sono due passi diversi, e il secondo è quello che costa poco.

Domande frequenti

Che cosa vuol dire l’avviso su un quantificatore annidato?

Una forma come `(a+)+` dà al motore un numero esponenziale di modi di suddividere lo stesso testo, così un input che non corrisponde può richiedere più dell’età dell’universo. È la forma che sta dietro alla maggior parte dei denial of service da espressione regolare.

Perché mi dice che un gruppo cattura?

Perché un gruppo di cattura che non si usa occupa una posizione e sposta la numerazione di quelli che si usano. `(?:…)` raggruppa senza catturare, e così `$1` continua a puntare a quello che si intendeva.

Spiega anche i flag?

Sì, in un pannello a parte — ogni flag impostato, il suo nome e che cosa cambia. `m` e `s` in particolare vale la pena leggerli, perché i loro nomi suggeriscono il comportamento l’uno dell’altro.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.