Banco di prova per le espressioni regolari

Inserendo un'espressione regolare e un testo di prova, evidenzia le corrispondenze ed elenca i valori dei gruppi di cattura. Prevede i contrassegni g, i, m, s e u e si serve direttamente dell'oggetto RegExp di JavaScript.

Le espressioni regolari più usate

Scopo Espressione Descrizione
Indirizzo di posta elettronica ^[\w.+-]+@[\w-]+\.[\w.-]+$ Convalida in modo semplificato la forma di un indirizzo, con nome utente e dominio ai due lati della chiocciola; non è pienamente conforme alla norma.
Numero di telefono ^0\d{1,4}-\d{1,4}-\d{4}$ Corrisponde ai numeri fissi e mobili separati da trattini, per esempio 03-1234-5678 oppure 090-1234-5678.
Indirizzo web https?:\/\/[\w.-]+(?:\/[\w\-./?%&=]*)? Estrae gli indirizzi che cominciano con http:// oppure https://, compresi percorsi e parametri di interrogazione.
Codice postale ^\d{3}-\d{4}$ Corrisponde ai codici postali nella forma di tre cifre, un trattino e quattro cifre, come 123-4567.
Codice di colore esadecimale ^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$ Corrisponde ai codici di colore dei fogli di stile, nella forma completa a sei cifre o in quella abbreviata a tre.
Sole cifre ^[0-9]+$ Verifica che l'intera stringa sia composta soltanto di cifre da 0 a 9.

Consigli

  • La dicitura /contrassegni mostrata a destra del campo permette di vedere a colpo d'occhio quali contrassegni siano attivi.
  • I gruppi di cattura riguardano soltanto le parti racchiuse fra (). Se volete raggruppare senza catturare, usate (?:...): l'elenco dei gruppi resterà più pulito.
  • Senza il contrassegno globale si ottiene la sola prima corrispondenza. Per contare tutte le occorrenze, attivatelo sempre.
  • Il pulsante degli esempi carica un caso pratico di estrazione di indirizzi di posta: è un buon punto di partenza per osservare il comportamento dei gruppi di cattura.
  • L'elaborazione avviene interamente nel navigatore e né l'espressione né il testo di prova sono mai trasmessi ad alcun servente.

Domande frequenti

Senza di esso l'espressione corrisponde alla sola prima occorrenza e ignora le successive. Per trovarle tutte, attivatelo.

La sintassi fondamentale — [abc], \d, +, * — è quasi sempre la stessa, ma la notazione dei gruppi con nome, il sostegno delle asserzioni in avanti e all'indietro e i contrassegni disponibili variano nel dettaglio da un linguaggio all'altro. Questo strumento si attiene alla specifica di JavaScript e non garantisce il funzionamento altrove.

No. Tutta l'elaborazione avviene nel JavaScript del navigatore e quanto inserite non è mai trasmesso né conservato sui serventi di toolbase.cc.

Compare quando il costruttore delle espressioni regolari di JavaScript rileva un errore di sintassi: una parentesi non chiusa, un quantificatore come *, + o ? privo di elemento a cui applicarsi, una classe di caratteri malformata. Il messaggio contiene qualche indizio: verificate la corrispondenza delle parentesi e la protezione dei caratteri speciali, come \. oppure \(.
Tool-kun

A proposito — che cosa accade dentro un motore di espressioni regolari

Le espressioni regolari discendono dalla teoria dei linguaggi regolari proposta negli anni Cinquanta dal matematico Stephen Kleene. Le prime realizzazioni comparvero nei programmi di scrittura dei sistemi UNIX e nel comando grep, il cui nome è l'acronimo di «cerca globalmente un'espressione regolare e stampa»: da lì si diffusero rapidamente come strumento pratico per il trattamento dei testi. È significativo che il nome stesso di quel comando derivi dall'operazione sulle espressioni regolari.

Il motore di JavaScript esegue la ricerca con la strategia del ritorno all'indietro: prova in ordine ciascun elemento dell'espressione e, in caso di insuccesso, torna di un passo e riprova. È un metodo duttile ma, con espressioni come (a+)+b e stringhe lunghe che non corrispondono, il numero di tentativi cresce in modo esponenziale — il cosiddetto ritorno all'indietro catastrofico — fino a bloccare navigatore o servente. Prima di usare espressioni complesse in produzione è indispensabile provarle con ingressi di ogni genere.

Un oggetto con il contrassegno globale conserva al proprio interno la posizione del cursore e, a ogni chiamata del metodo di esecuzione, riprende la ricerca da lì. Riutilizzando lo stesso oggetto quel cursore può restare inavvertitamente dove si trovava: questo strumento crea perciò ogni volta una nuova istanza, evitando che uno stato indesiderato si trascini da un'esecuzione all'altra.

I gruppi di cattura con nome, nella forma (?<nome>...), sono una funzione relativamente recente, aggiunta nell'edizione 2018 dello standard del linguaggio. Potendo richiamare un gruppo per nome anziché per numero, la leggibilità migliora tanto più quanto l'espressione si complica: sono particolarmente utili là dove conta sapere che cosa rappresenti ciascun gruppo, come nell'analisi delle date.