Test regex
Prova i pattern su testo reale, direttamente nel browser.
| # | Tipo | Valore | Posizione |
|---|
Funziona nel browser. Quello che scrivi non viene inviato da nessuna parte.
- Corrispondenze evidenziate in tempo reale
- Gruppi con nome e numerati
- Esegue in sicurezza in un worker
Come testare un'espressione regolare
- Scrivi o incolla il tuo pattern e scegli i flag che ti servono.
- Incolla il testo su cui vuoi verificare la corrispondenza.
- Controlla le corrispondenze evidenziate, la tabella dei gruppi, oppure anteprima una sostituzione.
Guida rapida alla sintassi regex
| Pattern | Corrisponde a |
|---|---|
| \d | Qualsiasi cifra, da 0 a 9 |
| \w | Qualsiasi lettera, cifra o carattere _ |
| \s | Qualsiasi carattere di spaziatura |
| + | Uno o più del token precedente |
| * | Zero o più del token precedente |
| ? | Zero o uno, oppure rende pigro un quantificatore |
| ^ e $ | Inizio e fine della stringa o della riga |
Funzionalità regex di JavaScript
| Funzionalità | Sintassi | Nota |
|---|---|---|
| Gruppi con nome | (?<name>...) | Supportati da ES2018 |
| Lookbehind | (?<=...) e (?<!...) | Supportati da ES2018 |
| Modalità Unicode | flag u | Necessaria per le property escape Unicode come \p{Letter} |
| Case-insensitive | flag i | Stessa idea della maggior parte degli altri linguaggi |
Consigli per scrivere i pattern
- Fai l'escape dei caratteri speciali come . ( ) [ ] con una barra inversa quando intendi il carattere letterale.
- Usa un gruppo non catturante (?:...) per raggruppare quando non ti serve richiamare quella corrispondenza in seguito.
- I quantificatori greedy prendono il più possibile. Aggiungi un ? dopo uno di essi, come +?, per una corrispondenza pigra che si ferma al primo punto possibile.
- Testa anche i casi limite, come una stringa vuota o spazi extra, non solo il testo che ti aspetti corrisponda.
Domande su Test regex
Perché il mio pattern ha smesso di rispondere?
Alcuni pattern possono fare backtracking in modo esponenziale su certi testi. La corrispondenza viene calcolata in un worker in background con un limite di 1,5 secondi, così un pattern che va in loop viene fermato invece di bloccare la scheda.
Cosa significano i flag?
g trova tutte le corrispondenze invece della sola prima, i ignora maiuscole e minuscole, m fa corrispondere ^ e $ riga per riga, s fa sì che il punto corrisponda anche a newline, u attiva la modalità Unicode completa, y ancora la ricerca all'ultimo indice, e d aggiunge le posizioni di inizio e fine per ogni corrispondenza.
La casella di sostituzione modifica il mio testo di prova?
No. Mostra cosa produrrebbe String.replace in un riquadro separato, così il testo di prova che hai scritto resta esattamente com'era.
Sono supportati i gruppi di cattura con nome?
Sì. Scrivi un gruppo come (?<name>...) e il suo nome compare accanto al numero del gruppo nella tabella delle corrispondenze.
Il mio testo viene inviato da qualche parte?
No. La corrispondenza viene calcolata in un worker dentro la tua stessa scheda del browser, e niente di ciò che scrivi lascia la pagina.
Quale variante di regex viene usata?
Il motore RegExp nativo di JavaScript del tuo browser, lo stesso che esegue i tuoi pattern se stai costruendo una web app o uno script Node.js.
Cos'è il catastrophic backtracking?
È quando un pattern con gruppi ripetuti annidati, come (a+)+b, può impiegare un tempo esponenzialmente più lungo per fallire man mano che l'input cresce anche solo di un carattere. Il timeout di 1,5 secondi del worker qui blocca un pattern del genere prima che possa bloccare la pagina.
^ e $ possono corrispondere all'inizio e alla fine di ogni riga, non solo dell'intera stringa?
Sì, attiva il flag m (multilinea). Senza di esso, ^ e $ corrispondono solo all'inizio e alla fine dell'intero testo di prova.