Tutti i token regex fondamentali: ancoraggi, classi di caratteri, quantificatori, gruppi e flag. Cosa significa ciascuno, con una corrispondenza concreta. Il compagno di consultazione rapida allo strumento Regex Tester.
I token regex si compongono: unisci un ancoraggio, una classe di caratteri e un quantificatore per costruire un pattern. ^ fissa l'inizio, \d cerca una cifra e {2,4} stabilisce quante volte. Combinati in ^\d{2,4}$ corrispondono a un'intera stringa di due-quattro cifre. Leggi un pattern da sinistra a destra, un token alla volta. Lo strumento compagno Regex Tester permette di provare questi token dal vivo sul tuo testo.
Corrisponde alla posizione all'inizio della stringa, o all'inizio di una riga con il flag m.
^He → He
Corrisponde alla posizione alla fine della stringa, o alla fine di una riga con il flag m.
lo$ → lo
Corrisponde a un confine di parola: la posizione tra un carattere di parola e uno che non lo è.
\bcat\b → cat
Corrisponde a un non confine di parola: la posizione tra due caratteri di parola o due che non lo sono.
\Bar → ar
Classi di caratteri
Corrisponde a qualsiasi carattere singolo tranne un'interruzione di riga, salvo con il flag s attivo.
a.c → abc
Corrisponde a qualsiasi cifra, da 0 a 9.
\d → 7
Corrisponde a qualsiasi carattere che non sia una cifra.
\D → a
Corrisponde a qualsiasi carattere di parola: una lettera, una cifra o un trattino basso.
\w → _
Corrisponde a qualsiasi carattere che non sia un carattere di parola.
\W → !
Corrisponde a qualsiasi carattere di spaziatura: uno spazio, un tab o un'interruzione di riga.
a\sb → a b
Corrisponde a qualsiasi carattere che non sia di spaziatura.
\S → a
Corrisponde a uno qualunque dei caratteri elencati tra le parentesi quadre.
[aeiou] → e
Corrisponde a qualsiasi carattere che non sia tra quelli elencati tra le parentesi quadre.
[^aeiou] → s
Corrisponde a qualsiasi carattere singolo nell'intervallo dato, da a a z.
[a-z] → m
Corrisponde a qualsiasi carattere singolo, interruzioni di riga incluse: l'idioma comune per un punto che attraversa le righe.
[\s\S] → \n
Corrisponde a qualsiasi lettera unicode di qualsiasi alfabeto, con il flag u attivo.
\p{L} → é
Corrisponde a qualsiasi carattere numerico unicode di qualsiasi alfabeto, con il flag u attivo.
\p{N} → ٣
Sequenza di escape: corrisponde a un singolo carattere line feed.
\n → line feed
Sequenza di escape: corrisponde a un singolo carattere di tabulazione.
\t → tab
Sequenza di escape: corrisponde a un singolo carattere carriage return.
\r → carriage return
Corrisponde al singolo carattere con il codice esadecimale a due cifre indicato.
\x41 → A
Corrisponde al singolo carattere con il punto di codice esadecimale indicato, con il flag u attivo.
\u{1F600} → 😀
Intersezione di classi, col flag v: corrisponde ai caratteri presenti in entrambi gli insiemi insieme.
[[a-z]&&[^aeiou]] → t
Quantificatori
Corrisponde al token precedente zero o più volte.
ab* → abbb
Corrisponde al token precedente una o più volte.
a+ → aaa
Corrisponde al token precedente zero o una volta, rendendolo facoltativo.
colou?r → color
Corrisponde al token precedente esattamente n volte.
a{3} → aaa
Corrisponde al token precedente n o più volte.
a{2,} → aaaa
Corrisponde al token precedente da n a m volte, estremi inclusi.
a{2,4} → aaa
Quantificatore lazy: corrisponde al token precedente zero o più volte, catturandone il meno possibile.
<.*?> on <a><b> → <a>
Quantificatore lazy: corrisponde al token precedente una o più volte, catturandone il meno possibile.
\d+? on 123 → 1
Quantificatore lazy: corrisponde al token precedente zero o una volta, preferendo zero.
ab?? on ab → a
Quantificatore lazy: corrisponde al token precedente da n a m volte, catturandone il meno possibile.
a{1,3}? on aaa → a
Quantificatore possessivo (PCRE): corrisponde al token precedente zero o più volte e lo conserva, senza mai fare backtracking per provare altre suddivisioni.
.*+a on aaa → no match
Gruppi e alternanza
Gruppo di cattura: corrisponde alla sequenza e la memorizza per i backreference.
(ab)+ → abab
Gruppo non catturante: corrisponde alla sequenza senza memorizzarla.
(?:ab)+ → abab
Lookahead positivo: corrisponde se i caratteri successivi sono abc, senza consumarli.
a(?=b) → a
Lookahead negativo: corrisponde se i caratteri successivi non sono abc, senza consumarli.
a(?!b) → a
Backreference: corrisponde al testo esatto catturato dal gruppo di cattura 1.
(a)\1 → aa
Alternanza: corrisponde all'espressione prima o dopo la barra verticale.
cat|dog → dog
Gruppo di cattura con nome: corrisponde alla sequenza e la memorizza sotto il nome indicato.
(?<year>\d{4}) → year = 2026
Lookbehind positivo: corrisponde se i caratteri precedenti sono abc, senza consumarli.
(?<=a)b → b
Lookbehind negativo: corrisponde se i caratteri precedenti non sono abc, senza consumarli.
(?<!a)b → b
Backreference con nome: corrisponde al testo esatto catturato dal gruppo con nome.
(?<w>\w+) \k<w> → the the
Gruppo atomico (PCRE): corrisponde alla sequenza una volta e non fa mai backtracking al suo interno.
(?>a+)ab on aab → no match
Branch reset (PCRE): un'alternanza in cui ogni ramo riusa gli stessi numeri di gruppo.
(?|(cat)|(dog)) → \1 = dog
Flag
Flag globale: trova ogni corrispondenza nella stringa, non solo la prima.
/a/g on aaa → a, a, a
Flag case-insensitive: ignora il maiuscolo/minuscolo durante la corrispondenza.
/Hi/i → hi
Flag multiline: tratta ^ e $ come inizio e fine di ogni riga.
/^a/m matches at the start of each line
Flag dotall: permette al punto di corrispondere anche a un'interruzione di riga.
/a.b/s → a\nb
Flag unicode: tratta il pattern e l'input come punti di codice unicode.
/\u{1F600}/u → 😀
Flag sticky: corrisponde solo alla posizione esatta impostata da lastIndex.
/ab/y matches only at lastIndex
Flag indices: aggiunge al risultato la posizione di inizio e fine di ogni corrispondenza.
/b/d on abc → indices [1, 2]
Flag unicode sets: un u più severo che permette anche operazioni di insieme dentro una classe.
/[a-z&&[^aeiou]]/v → t
Flag extended (PCRE): ignora gli spazi non preceduti da escape e i commenti # dentro il pattern.