🌐 IT

🔣 Regex Tester

Testa pattern di espressioni regolari in tempo reale e visualizza i risultati delle corrispondenze. Include impostazioni dei flag, cattura dei gruppi e una libreria di pattern comuni.

Pattern comuni

GUIDA

Scopri di piu

01

1. Nozioni di base sulle espressioni regolari

Le espressioni regolari (Regex) sono strumenti potenti per definire, cercare, estrarre e sostituire pattern di stringhe. Corrispondi letteralmente (\d per le cifre, \w per i caratteri alfanumerici) oppure usa caratteri speciali per pattern complessi. Esempio: ^[a-z]+$ indica stringhe contenenti solo lettere minuscole. ^ è l'inizio, $ è la fine, [a-z] va da a a z, + significa uno o più. Sono supportate in quasi tutti i linguaggi di programmazione e negli editor di testo, e sono essenziali per la validazione degli input, l'analisi dei dati e la sostituzione di testo.

02

2. Raccolta di pattern comuni

Pattern regex usati spesso nella pratica: Email: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$, Telefono (US): ^(\+1)?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$, URL: ^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b, Data (YYYY-MM-DD): ^\d{4}-\d{2}-\d{2}$, Password (min 8 caratteri, maiuscola+minuscola+cifra+speciale): ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$. Usa questi pattern come base e modificali per il tuo progetto.

03

3. Spiegazione dei flag Regex

I flag Regex controllano il comportamento della ricerca. g(global): trova tutte le corrispondenze, non solo la prima. i(ignoreCase): corrispondenza senza distinzione tra maiuscole e minuscole (/hello/i corrisponde a Hello, HELLO). m(multiline): ^ e $ corrispondono all'inizio/fine di ogni riga. s(dotAll): . corrisponde ai caratteri di nuova riga (\n). u(unicode): gestisce correttamente l'intero Unicode (emoji, ecc.). y(sticky): avvia la ricerca solo nella posizione lastIndex. Esempio: /hello/gi trova tutti gli hello ignorando il maiuscolo/minuscolo.

04

4. Gruppi di cattura e backreference

Le parentesi () creano gruppi che catturano le porzioni corrispondenti per un uso successivo. Esempio: /(\d{4})-(\d{2})-(\d{2})/ dove $1 è l'anno, $2 il mese, $3 il giorno. L'array risultante di match() in JavaScript include i gruppi catturati. Le backreference \1, \2 corrispondono allo stesso testo dei gruppi precedenti. Esempio: /(\w+)\s+\1/ corrisponde a "hello hello". I gruppi non capturanti (?:) raggruppano senza cattura per prestazioni migliori.

05

5. Lookahead e lookbehind

Lookahead e lookbehind verificano i pattern prima/dopo senza includerli nella corrispondenza. Positive lookahead (?=): /\d(?=px)/ corrisponde alle cifre prima di px ("100" in "100px"). Negative lookahead (?!): /\d(?!px)/ corrisponde alle cifre non seguite da px. Positive lookbehind (?<=): /(?<=\$)\d+/ corrisponde alle cifre dopo $ ("100" in "$100"). Negative lookbehind (?<!): l'opposto. Sono usati spesso nella validazione delle password per verificare la presenza di caratteri specifici.

06

6. Ottimizzazione delle prestazioni Regex

Le regex complesse possono causare problemi di prestazioni. Sii il più specifico possibile ([a-z]+ invece di .*). Sostituisci i gruppi di cattura non necessari con gruppi non capturanti (?:). Usa quantificatori lazy (*?, +?) invece di greedy (*,+) per ridurre il backtracking. Per testi grandi, i metodi stringa (indexOf, startsWith) possono essere più veloci delle regex. Precompila le regex per il riuso (non creare continuamente nuovi RegExp). Fai attenzione agli attacchi ReDoS (Regular Expression Denial of Service): non usare mai direttamente l'input dell'utente come pattern regex.

Domande frequenti

Posso combinare più flag regex?
Sì, puoi attivare più flag insieme. Per esempio, g e i insieme trovano tutte le corrispondenze ignorando il maiuscolo/minuscolo. Basta selezionare le opzioni che ti servono e lo strumento le applica insieme.
Posso usare i pattern comuni integrati così come sono?
Pattern come email, telefono, URL e data funzionano subito nella maggior parte dei casi, ma è meglio adattarli alle esigenze specifiche del tuo progetto (ad esempio formati telefonici specifici per paese).
Cosa devo controllare quando non ci sono corrispondenze?
Per prima cosa controlla refusi nel pattern, escape mancanti (\. invece di .) e impostazioni dei flag. "Nessuna corrispondenza trovata" significa che la regex è valida, ma non corrisponde alla tua stringa di test.
Come vengono mostrati i gruppi di cattura nei risultati?
Questo strumento non elenca separatamente i valori dei gruppi catturati. Evidenzia invece ogni corrispondenza nella stringa di test e mostra il conteggio totale delle corrispondenze. Puoi comunque scrivere gruppi di cattura nel pattern, ma per verificare cosa hanno catturato davvero $1, $2, ecc. dovrai controllarlo tu (ad esempio tramite la console del browser).
Perché i pattern regex complessi sono lenti?
Spesso la causa sono quantificatori greedy o gruppi annidati che provocano un backtracking eccessivo. Scrivere pattern più specifici e usare quantificatori lazy (*?, +?) di solito aiuta.