Test delle espressioni regolari
Testa le espressioni regolari JavaScript localmente con flag g/i/m/s/u/y, conteggi di corrispondenze, gruppi di acquisizione e denominati, intervalli di righe e colonne e anteprima di sostituzione nativa.
/
/g
Prova testo
Caratteri
0 / 50,000
Risultati delle corrispondenze
Inserisci un modello per iniziare la corrispondenza
Testo sostitutivo
Caratteri
0 / 50,000
Anteprima di sostituzione
Avvio rapido
Scenari comuni
Estrazione dati
usa (\d{4}-\d{2}-\d{2}) per estrarre le date e ([\w.]+@[\w.]+) per estrarre gli indirizzi email
Validazione del formato
scrivi una regex, incolla più esempi e verifica rapidamente se il pattern corrisponde esattamente al formato di destinazione
Sostituzione in batch
usa i gruppi di cattura per ristrutturare il contenuto. Ad esempio, converti "Nome Cognome" in "Cognome, Nome" con il pattern (\S+)\s+(\S+) e la sostituzione $2, $1
Gruppi denominati
utilizzare (?<anno>\d{4})-(?<mese>\d{2})-(?<giorno>\d{2}) per estrarre le date, quindi utilizzare $<anno>/$<mese>/$<giorno> per ricostruirle
Apprendimento delle regex
prova pattern diversi e osserva il comportamento delle corrispondenze per capire visivamente quantificatori, ancore e classi di caratteri
Gestione multilinea
attiva il flag m perché ^ e $ corrispondano riga per riga, utile per log, codice e file di configurazione
Consigli d'uso
Limitazioni e compatibilità
Privacy e sicurezza
Domande frequenti
Un'espressione regolare (regex) è un linguaggio di pattern per descrivere strutture di testo. Considerala una "ricerca avanzata": invece di cercare una parola fissa, cerchi tutto ciò che corrisponde a una regola.\n\nAd esempio, \\d{4}-\\d{2}-\\d{2} corrisponde a tutte le date nel formato AAAA-MM-GG e [\\w.]+@[\\w.]+ corrisponde agli indirizzi email. Regex è ampiamente utilizzato per: ricerca ed estrazione di testo (ricerca di codici di errore nei log), convalida del formato (controllo dei numeri di telefono) e sostituzione batch (conversione dei formati di data).\n\nQuasi tutti i linguaggi di programmazione (JavaScript, Python, Java, Go, ecc.) e molti strumenti (VS Code, grep, sed) supportano regex con una sintassi per lo più simile. Questo strumento utilizza il motore JavaScript RegExp per test e apprendimento rapidi online.
L'espressione regolare JavaScript restituisce solo la prima corrispondenza per impostazione predefinita: si tratta di un comportamento di specifica del linguaggio, non di una limitazione dello strumento. Fai clic sul pulsante g nella barra delle bandiere per abilitare la ricerca globale e vedere tutte le corrispondenze.\n\nNota l'interazione tra g e y: g scansiona l'intero testo dall'inizio alla fine, mentre y (permanente) richiede che ciascuna corrispondenza inizi esattamente dove terminava quella precedente: se sono presenti caratteri di intervallo tra le corrispondenze, y si ferma al primo intervallo. Di solito è sufficiente abilitare g senza y.
Le cause più comuni sono quattro: 1. Parentesi non bilanciate: ogni ( richiede una ), e ogni [ richiede una ]. Anche se l’IDE completa automaticamente, lo strumento valida il pattern effettivamente inserito. 2. Quantificatori nel punto sbagliato: *, +, ?, {n} devono seguire un elemento ripetibile. Combinazioni come *+ o ?* non sono valide; i quantificatori non avidi si scrivono *? o +?. 3. Escape incompleto: una \ isolata alla fine non è valida; deve fare escape di un carattere specifico, ad esempio \d, \n o \\. 4. Proprietà Unicode senza flag u: \p{L}, \p{Script=Han} e property escape simili richiedono il flag u in questo strumento.
Questi riferimenti sono quelli di String.prototype.replace() in JavaScript: - $1, $2, ..., $99: contenuto del gruppo di cattura corrispondente. - $&: l’intera corrispondenza. - $`: il testo prima della corrispondenza. - $': il testo dopo la corrispondenza. - $<name>: contenuto di un gruppo denominato (?<name>...). Esempio: se (\w+)\s(\w+) corrisponde a “hello world”, la sostituzione $2-$1 produce “world-hello”. Per inserire un $ letterale nel testo sostitutivo, scrivi $$.
I motori regex cambiano da linguaggio a linguaggio soprattutto in tre aree: 1. Sintassi supportata: JavaScript non supporta ricorsione PCRE (?R), rami condizionali (?(cond)yes|no) o gruppi atomici (?>...). Anche il modulo re di Python non li supporta; il modulo regex di terze parti ne supporta alcuni. Java supporta i gruppi atomici, ma non la ricorsione. 2. Unicode: in JavaScript, \w indica soprattutto lettere latine di base, cifre e underscore. Abilitare u non lo fa corrispondere automaticamente ai caratteri cinesi. Per lettere Unicode usa property escape come \p{L} con il flag u. 3. A capo: in Python, . non corrisponde a \n per impostazione predefinita, come in JavaScript. Pattern.DOTALL in Java è simile al flag s di JavaScript. Usa questo strumento per una verifica rapida di JavaScript RegExp, poi conferma con il motore reale del linguaggio di destinazione.