Come usare le regex in JavaScript

Hai mai sentito parlare delle espressioni regolari? Credo di si, esse sono presenti nella maggior parte dei linguaggi di programmazione e sono molto utili nelle operazioni di ricerca e nella sostituzione su stringhe di testo.
Anche JavaScript fa uso delle espressioni regolari ed in questo articolo vedremo insieme come utilizzarle.
- Leggi l'articolo, ti bastano solo 1 minuto, 12 secondi
Sei di fretta? Scarica il PDF e consultalo quando vuoi!
Sommario
1 Cosa sono le espressioni regolari |
2 I metacaratteri |
3 Il metodo mark() |
4 Il metodo replace() |
5 Il metodo search() |
6 Conclusione |
7 Commenti |
Cosa sono le espressioni regolari
Le espressioni regolari (in inglese “regular expressions” o semplicemente “regex”) sono una sintassi utilizzata per definire un insieme di stringhe o di caratteri. Queste espressioni possono essere utilizzate per effettuare ricerche, sostituzioni, estrazioni, nonché per la convalida e l’analisi dell’input e altre operazioni su un testo.
Le espressioni regolari sono definite utilizzando una sintassi specifica e in genere sono racchiuse tra barre (/) in JavaScript.
Le espressioni regolari sono composte da caratteri normali e speciali, chiamati metacaratteri. I caratteri normali rappresentano se stessi, mentre i metacaratteri hanno un significato speciale.
In JavaScript, possono essere utilizzate in diversi modi, tra cui con i metodi match(), replace() e search() delle stringhe.
I metacaratteri
Come anticipato, gli elementi costitutivi di base delle espressioni regolari sono i metacaratteri, ovvero caratteri che hanno un significato speciale nel contesto di un’espressione regolare. Alcuni metacaratteri comuni includono:
- . – Corrisponde a qualsiasi singolo carattere, ad eccezione di una nuova riga.
- * – Corrisponde al carattere o al gruppo precedente zero o più volte.
- + – Corrisponde al carattere o al gruppo precedente una o più volte.
- ? – Corrisponde al carattere o al gruppo precedente zero o una volta.
- [] – Corrisponde a qualsiasi carattere all’interno delle parentesi quadre.
- ^ – Corrisponde all’inizio di una stringa.
- $ – Corrisponde alla fine di una stringa.
Ad esempio, l’espressione regolare /a.b/ corrisponderà a qualsiasi stringa che contiene una ‘a’ seguita da un singolo carattere, seguito da una ‘b’.
Quindi corrisponderà a “abc” ma non a “ab” o “acb”.
Il metodo mark()
Iniziamo con il metodo match().
Questo metodo cerca di trovare una corrispondenza tra un’espressione regolare e una stringa, e restituisce un array contenente tutte le occorrenze trovate.
Ad esempio, se vogliamo trovare tutte le occorrenze di una parola in una stringa, possiamo utilizzare il seguente codice:
let testo = "Questa è una stringa di esempio che contiene la parola 'esempio' più volte"; let risultato = testo.match( /esempio/g ); console.log(risultato); // Risultato: ["esempio", "esempio"]
Il metodo replace()
Il metodo replace(), come suggerisce il nome, consente di sostituire una porzione di testo con un’altra.
In questo caso, si passa un’espressione regolare come primo parametro e la stringa di sostituzione come secondo parametro.
Ad esempio:
let testo = "Questa è una stringa di esempio"; let nuovotesto = testo.replace( /esempio/g, "esempio modificato" ); console.log(nuovotesto); // Risultato: "Questa è una stringa di esempio modificato"
Il metodo search()
Infine, il metodo search() consente di trovare la prima occorrenza di una corrispondenza tra un’espressione regolare e una stringa, restituendo l’indice della posizione della prima occorrenza trovata.
Ad esempio:
let testo = "Questa è una stringa di esempio"; let risultato = testo.search( /esempio/ ); console.log(risultato); // Risultato: 22
Conclusione
Esistono molte altre funzionalità che puoi utilizzare per creare espressioni regolari più complesse. All’inizio può essere difficile comprendere ed imparare le espressioni regolari, ma sono strumenti molto potenti e flessibili una volta che ne hai preso confidenza.
Ti suggerisco, se vuoi apprfondire l’argomento, davvero molto vasto e specifico, di dare un’occhiata alla documentazione ufficiale.