Vai al contenuto

Tester e Validatore di Regex Online Gratuito - Testa i Pattern Istantaneamente

Testa e valida espressioni regolari online con evidenziazione in tempo reale. Tester di pattern regex gratuito con validazione della sintassi, risultati dei match e funzionalità di salvataggio. Testa regex ora!

Tester di Pattern Regex

Risultati Corrispondenza

Inserisci un pattern e un testo di test per vedere i risultati

Salva Pattern

Pattern Salvati

Nessun pattern salvato ancora

Guida ai Simboli Regex

.Corrisponde a qualsiasi carattere eccetto nuova riga
\dCorrisponde a qualsiasi cifra (0-9)
\DCorrisponde a qualsiasi carattere non numerico
\wCorrisponde a qualsiasi carattere di parola (a-z, A-Z, 0-9, _)
\WCorrisponde a qualsiasi carattere non di parola
\sCorrisponde a qualsiasi carattere di spazio bianco
\SCorrisponde a qualsiasi carattere non di spazio bianco
^Corrisponde all'inizio della riga
$Corrisponde alla fine della riga
*Corrisponde a 0 o più volte il carattere precedente
+Corrisponde a 1 o più volte il carattere precedente
?Corrisponde a 0 o 1 volta il carattere precedente
{n}Corrisponde esattamente a n volte il carattere precedente
{n,}Corrisponde ad almeno n volte il carattere precedente
{n,m}Corrisponde tra n e m volte il carattere precedente
[abc]Corrisponde a uno qualsiasi dei caratteri tra parentesi
[^abc]Corrisponde a qualsiasi carattere non tra parentesi
(abc)Raggruppa più token insieme e cattura la corrispondenza
a|bCorrisponde a a o b
\bCorrisponde a una posizione di confine di parola
Calcolatore di caricamento...
📚

Documentazione

Che cos'è un tester di espressioni regolari

Un tester di espressioni regolari è uno strumento che verifica se un'espressione regolare corrisponde a una porzione di testo e mostra le corrispondenze. Un'espressione regolare, o regex, è una breve sequenza di caratteri che descrive un pattern nel testo, come «tre cifre consecutive» o «qualsiasi parola che inizia con una lettera maiuscola». Questo validatore di regex consente di inserire un pattern e del testo di prova, quindi di vedere subito le corrispondenze evidenziate, senza scrivere codice.

Le espressioni regolari vengono usate in molti linguaggi di programmazione per cercare testo, verificare che i dati inseriti dall'utente abbiano il formato corretto ed estrarre parti specifiche da un blocco di testo più ampio. La sintassi è compatta, ma può essere facile sbagliarsi; perciò testare uno schema prima di usarlo in un programma aiuta a individuare gli errori in anticipo.

Come testare online un'espressione regolare

  1. Digitare uno schema. Inserire la regex nel campo dello schema. Lo strumento controlla la sintassi mentre l'utente digita e mostra un messaggio di errore se lo schema non è valido, per esempio quando una parentesi quadra o tonda è lasciata aperta.
  2. Scegliere i flag. I flag modificano il modo in cui viene applicato lo schema (vedere sotto).
  3. Inserire il testo di prova. Digitare o incollare il testo da cercare nella casella del testo di prova.
  4. Leggere i risultati. Le corrispondenze vengono evidenziate nel testo e lo strumento indica quante ne ha trovate. Se è presente del testo di prova, indica anche se lo schema corrisponde all'intero testo dall'inizio alla fine oppure solo a una sua parte.
  5. Salvare uno schema. Uno schema può essere memorizzato con un'etichetta breve, in modo da poterlo riutilizzare in seguito. Gli schemi salvati vengono conservati nel browser, non su un server, quindi compaiono solo sullo stesso dispositivo e nello stesso browser.
  6. Copiare i risultati. Il testo corrispondente o lo schema stesso possono essere copiati negli appunti con un solo clic.

Flag delle regex

Un flag è una singola lettera aggiunta dopo uno schema, che ne modifica il comportamento. Questo strumento supporta quattro flag, singolarmente o combinati:

FlagNomeEffetto
gGlobaleTrova ogni corrispondenza nel testo invece di fermarsi alla prima.
iSenza distinzione tra maiuscole e minuscoleIgnora le differenze tra lettere maiuscole e minuscole.
mMultirigaFa sì che ^ e $ corrispondano all'inizio e alla fine di ogni riga, non solo all'inizio e alla fine dell'intero testo. Modifica il punto in cui vengono trovate le corrispondenze, ma non il controllo dell'intero testo descritto sotto.
sPunto su tuttoFa sì che . corrisponda anche ai caratteri di nuova riga.

I flag possono essere combinati, per esempio gi per globale e senza distinzione tra maiuscole e minuscole, oppure gms per globale, multiriga e punto su tutto insieme.

Come lo strumento trova le corrispondenze

Il motore di ricerca cerca sempre ogni occorrenza dello schema nel testo; per questo il conteggio delle corrispondenze si comporta come se il flag globale fosse attivo anche quando non è selezionato nel menu a discesa. Ogni corrispondenza viene registrata con la sua posizione e lunghezza, quindi il testo originale viene suddiviso in parti corrispondenti e non corrispondenti, così da poter evidenziare le corrispondenze.

Per verificare se uno schema corrisponde all'intero testo, lo strumento inserisce lo schema in un gruppo non catturante e aggiunge gli ancoraggi: ^(?:pattern)$. Il raggruppamento è importante perché | (alternanza) ha una precedenza più bassa rispetto agli ancoraggi. Senza il gruppo, uno schema come cat|dog ancorato come ^cat|dog$ significherebbe in realtà «inizia con cat oppure finisce con dog», che non equivale a «l'intero testo è cat oppure dog».

Questo controllo rimuove anche il flag multiriga. Con m impostato, ^ e $ corrispondono a ogni interruzione di riga, quindi il test ancorato risponderebbe «corrisponde una qualsiasi riga?» invece di «corrisponde l'intero testo?». Per questo controllo lo strumento rimuove m e mantiene i e s, perché questi due flag modificano ciò a cui corrisponde lo schema, non la posizione degli ancoraggi. La risposta si riferisce quindi sempre al testo completo, comprese le interruzioni di riga.

Esempio svolto

Schema: \d+ (una o più cifre), flag: g, testo di prova: Room 12 has 5 chairs.

  • Corrispondenze trovate: 12 e 5, quindi il numero di corrispondenze è 2.
  • Controllo dell'intero testo: lo schema non corrisponde all'intero testo, perché il testo contiene anche lettere e spazi.

Se invece il testo di prova viene modificato in 12345, lo stesso schema corrisponde all'intera stringa, quindi il controllo dell'intero testo restituisce vero.

Riferimento alla sintassi delle regex

Corrispondenza dei caratteri

SimboloSignificatoEsempioCorrispondenze
.Qualsiasi carattere eccetto una nuova rigaa.c«abc», «adc», «a1c»
\dQualsiasi cifra, da 0 a 9\d{3}"123", "456"
\DQualsiasi carattere che non sia una cifra\D+«abc», «xyz»
\wQualsiasi lettera, cifra o carattere di sottolineatura\w+«abc123», «test_123»
\WQualsiasi carattere che non sia una lettera, una cifra o un carattere di sottolineatura\W+"!@#"
\sQualsiasi carattere di spaziaturaa\sb«a b»
\SQualsiasi carattere che non sia uno spazio\S+«abc»

Ancoraggi di posizione

SimboloSignificatoEsempioCorrispondenze
^Inizio di una riga^abc«abc» all'inizio di una riga
$Fine di una rigaabc$«abc» alla fine di una riga
\bUn confine di parola\bword\b«word» come parola intera

Quantificatori

SimboloSignificatoEsempioCorrispondenze
*Zero o più occorrenze dell'elemento precedentea*b«b», «ab», «aab»
+Una o più occorrenze dell'elemento precedentea+b«ab», «aab»
?Zero o una occorrenza dell'elemento precedentecolou?r«color», «colour»
{n}Esattamente n occorrenze dell'elemento precedentea{3}«aaa»
{n,}Almeno n occorrenze dell'elemento precedentea{2,}«aa», «aaa»
{n,m}Tra n e m occorrenze dell'elemento precedentea{2,4}«aa», «aaa», «aaaa»

Insiemi di caratteri e gruppi

SimboloSignificatoEsempioCorrispondenze
[abc]Uno qualsiasi dei caratteri elencati tra parentesi quadre[aeiou]Qualsiasi vocale singola
[^abc]Qualsiasi carattere non elencato tra parentesi quadre[^aeiou]Qualsiasi carattere non vocalico
(abc)Raggruppa i caratteri e cattura la corrispondenza(abc)+«abc», «abcabc»
`a\b`Corrisponde a «a» o «b»`cat\

È utile conoscere altre due funzionalità. Un lookahead, scritto a(?=b), corrisponde ad «a» solo quando è seguito da «b», senza includere «b» nella corrispondenza. Un lookbehind, scritto (?<=a)b, corrisponde a «b» solo quando viene subito dopo «a».

Esempi comuni di schemi

Questi schemi possono essere incollati nello strumento per osservarne il comportamento su testi di esempio.

Solo cifre: ^\d+$ corrisponde a una stringa composta interamente da cifre, come «48210», e rifiuta qualsiasi elemento contenente una lettera o uno spazio.

Indirizzo e-mail (controllo di base): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ corrisponde agli indirizzi nel formato name@domain.tld, come «user@example.com». È un controllo semplice, non il formato completo degli indirizzi e-mail definito dagli standard Internet; pertanto alcuni indirizzi insoliti ma validi non lo supereranno.

Numero di telefono statunitense: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ corrisponde a formati come «(123) 456-7890», «123-456-7890» e «1234567890».

Data nel formato YYYY-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ verifica che il mese sia compreso tra 01 e 12 e che il giorno sia compreso tra 01 e 31. Non verifica che il giorno sia valido per il mese specifico, quindi accetta «2024-02-30» anche se febbraio non ha mai 30 giorni.

Domande frequenti

Che cos'è un'espressione regolare? Un'espressione regolare è una sequenza di caratteri che definisce uno schema di ricerca. Viene usata per cercare, confrontare e modificare il testo nella maggior parte dei linguaggi di programmazione e degli editor di testo.

A cosa serve il flag globale? Senza il flag globale, una ricerca normalmente si interrompe dopo la prima corrispondenza. Con il flag globale (g), la ricerca continua e restituisce ogni corrispondenza nel testo. Questo strumento cerca sempre tutte le corrispondenze quando le conta, indipendentemente dal flag scelto.

Come si fa a cercare un punto letterale o un altro carattere speciale? Anteporre una barra rovesciata. Per esempio, \. corrisponde a un punto letterale invece che a «qualsiasi carattere», che è il significato di . senza escape.

Qual è la differenza tra .* e .*?? .* è goloso e corrisponde al maggior numero possibile di caratteri. .*? è pigro e corrisponde al minor numero possibile di caratteri, consentendo comunque al resto dello schema di riuscire.

Perché lo strumento indica che il testo non corrisponde interamente quando ogni riga corrisponde? Il controllo dell'intero testo tratta il testo come un'unica stringa, comprese le interruzioni di riga. Uno schema come \d+ corrisponde separatamente a ciascuna riga, 12 e 34, ma le due righe e la nuova riga tra loro non sono composte interamente da cifre; perciò la risposta sul testo completo è negativa. Per corrispondere a un testo che si estende su più righe, lo schema deve includere anche le interruzioni di riga, per esempio con [\s\S]+.

Come si verifica che un'intera stringa corrisponda a uno schema, non solo a una sua parte? Aggiungere ^ all'inizio e $ alla fine dello schema, per esempio ^[0-9]+$ per una stringa composta solo da cifre.

Questo tester applica le regole delle regex degli altri linguaggi di programmazione? Questo strumento usa il motore per le espressioni regolari integrato in JavaScript. La maggior parte della sintassi di base, come le classi di caratteri e i quantificatori, è condivisa da linguaggi come Python, Java e Perl, ma alcuni dettagli differiscono; quindi non è garantito che uno schema funzionante qui si comporti nello stesso modo ovunque.

Riferimenti

  1. "Regular expression." Wikipedia, Wikimedia Foundation. https://en.wikipedia.org/wiki/Regular_expression
  2. MDN Web Docs. "Regular expressions." Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
  3. Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.