Oggetto `RegExp`
Questo articolo spiega l'oggetto RegExp.
Spiegheremo l'oggetto RegExp con esempi pratici.
YouTube Video
Oggetto RegExp
Cos'è RegExp?
RegExp (Espressione Regolare) è un oggetto utilizzato per rappresentare modelli di stringhe. A differenza dei semplici confronti di caratteri, puoi definire in modo flessibile 'stringhe che soddisfano determinate condizioni'.
Utilizzando un oggetto RegExp, puoi eseguire operazioni come ricercare, validare, estrarre e sostituire stringhe in modo conciso e chiaro. È molto efficace per attività quotidiane come la validazione degli input dei moduli, l'analisi dei log e la formattazione del testo. Di seguito sono riportati alcuni semplici esempi di espressioni regolari.
1const pattern = /abc/;- Questa espressione regolare verifica se la sequenza 'abc' è inclusa.
Come creare espressioni regolari (due metodi)
Esistono due tipi di sintassi RegExp: notazione letterale e notazione tramite costruttore.
1// Literal notation: pattern and flags are written together
2const literal = /hello/;
3const literalWithFlag = /hello/i;
4const literalDigits = /\d+/;
5
6// Constructor notation: pattern and flags are passed separately
7const constructor = new RegExp("hello");
8const constructorWithFlag = new RegExp("hello", "i");
9const constructorDigits = new RegExp("\\d+");- La notazione letterale è concisa e leggibile, il che la rende adatta per le espressioni regolari usate come costanti.. D'altra parte, la notazione con costruttore viene utilizzata quando si desidera costruire il pattern usando variabili o determinarne il contenuto durante l'esecuzione.
- Con la notazione letterale, puoi descrivere intuitivamente sia l'espressione regolare che i suoi flag insieme. Al contrario, con la notazione con costruttore, è necessario specificare il pattern e i flag separatamente.
- Inoltre, con la notazione con costruttore, passi l'espressione regolare come stringa, quindi le barre rovesciate devono essere escape due volte.
test(): La validazione più semplice
L'oggetto RegExp fornisce metodi per effettuare valutazioni e operazioni utilizzando espressioni regolari. test() è un metodo che restituisce un booleano che indica se un modello corrisponde.
1const regex = /JavaScript/;
2
3console.log(regex.test("I love JavaScript")); // true
4console.log(regex.test("I love TypeScript")); // false
- È il primo metodo che dovresti imparare ed è ideale per ramificazioni condizionali o per la validazione degli input.
match(): Ottenere risultati corrispondenti
match() restituisce un array che contiene la stringa trovata e informazioni dettagliate.
1const text = "Version 1.2.3";
2const result = text.match(/\d+\.\d+\.\d+/);
3
4console.log(result[0]); // "1.2.3"
match()è più conveniente rispetto atest()per l’estrazione e l’analisi.
replace(): sostituzione usando espressioni regolari
replace() converte la parte corrispondente in un'altra stringa.
1const text = "Hello World";
2const result = text.replace(/\s+/g, " ");
3
4console.log(result); // "Hello World"
- Puoi usarlo per la formattazione dei log o per normalizzare gli spazi bianchi superflui.
Basi dei Flag (g, i, m)
Puoi specificare dei 'flag' nelle espressioni regolari. I flag sono opzioni che controllano come un'espressione regolare gestisce le stringhe secondo determinate regole. Anche con lo stesso modello, i risultati possono cambiare a seconda dei flag.
1const text = "apple Apple APPLE";
2const regex = /apple/gi; // or new RegExp("apple", "gi");
3
4console.log(text.match(regex)); // ["apple", "Apple", "APPLE"]
- Il flag
g(global) effettua la ricerca su tutta la stringa. - Il flag
i(ignore case) ignora le differenze tra maiuscole e minuscole durante la corrispondenza.
1const multilineText = `apple
2banana
3apple`;
4
5const regexM = /^apple/gm;
6
7console.log(multilineText.match(regexM)); // ["apple", "apple"]
- Il flag
m(multiline) viene utilizzato per trattare stringhe multi-linea su base per-riga. Con questo,^e$funzionano in base all'inizio o alla fine di ogni riga, invece che all'intera stringa.
Classi di caratteri: combinare più alternative
Usando le parentesi quadre [], puoi definire un insieme di caratteri possibili per una singola posizione.
1const regex = /gr[ae]y/;
2
3console.log(regex.test("gray")); // true
4console.log(regex.test("grey")); // true
- Ciò è utile per gestire variazioni ortografiche e semplici alternative.
Metacaratteri: scorciatoie comuni
I metacaratteri sono simboli che permettono di scrivere schemi comunemente usati in una forma più breve.
1const regex = /\d{4}-\d{2}-\d{2}/; // or new RegExp("\\d{4}-\\d{2}-\\d{2}");
2
3console.log(regex.test("2025-12-29")); // true
\dsignifica una cifra numerica, e{n}specifica il numero di ripetizioni.
^ e $: validare l’intera stringa
^ e $ rappresentano l’inizio e la fine di una stringa.
1const regex = /^\d+$/;
2
3console.log(regex.test("123")); // true
4console.log(regex.test("123a")); // false
- Sono importanti in situazioni in cui è richiesta una corrispondenza esatta, come nell’input di moduli.
Raggruppamento e cattura
Utilizzando le parentesi (), puoi estrarre valori parziali.
1const text = "2025/12/29";
2const regex = /(\d{4})\/(\d{2})\/(\d{2})/;
3const [, year, month, day] = text.match(regex);
4
5console.log(year, month, day); // 2025 12 29
- Viene spesso utilizzato per suddividere date e stringhe strutturate.
Errori comuni e punti da notare
Le espressioni regolari sono potenti, ma tendono a diventare difficili da leggere.
1// Hard to read
2const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+$/;- Se diventa troppo complesso, puoi considerare di aggiungere commenti, suddividere le espressioni o rivedere il processo stesso.
Riepilogo
RegExp è una caratteristica fondamentale in JavaScript per descrivere l’elaborazione delle stringhe in modo semplice e accurato. Non è necessario imparare subito espressioni regolari complesse; è importante usare i metodi e la sintassi di base come test, match e replace secondo le tue esigenze pratiche. Se riesci a considerare le espressioni regolari non come ‘conoscenze speciali’ ma come ‘strumenti per la rappresentazione organizzata dei modelli’, migliorerai notevolmente la qualità e la leggibilità della validazione degli input e dell’elaborazione dei testi.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.