Eseguiti RegEx e Oggetto RegExp
Ciao a tutti, aspiranti programmatori! Oggi ci imbarcheremo in un viaggio emozionante nel mondo delle Espressioni Regolari (RegEx) in JavaScript. Non preoccupatevi se non avete mai sentito parlare di RegEx prima - inizieremo dalle basi e lavoreremo fino ad arrivare a livelli più avanzati. Alla fine di questo tutorial, sarete in grado di utilizzare la potenza della RegEx come un vero professionista!
Cos'è una Espressione Regolare?
Le Espressioni Regolari, spesso abbreviate come RegEx, sono strumenti potenti per il matching e la manipolazione di stringhe. Pensate a loro come a un linguaggio speciale per descrivere pattern nel testo. Sono come un coltello svizzero per lavorare con le stringhe - versatile e incredibilmente utile!
Iniziamo con un esempio semplice:
let pattern = /hello/;
let text = "Hello, world!";
console.log(pattern.test(text)); // Output: false
In questo esempio, /hello/
è il nostro pattern RegEx, e stiamo testando se corrisponde al testo "Hello, world!". Il risultato è false
perché la RegEx è sensibile alle maiuscole per impostazione predefinita.
Oggetto RegExp
In JavaScript, possiamo creare pattern RegEx utilizzando l'oggetto RegExp. Ecco come:
let pattern1 = new RegExp("hello");
let pattern2 = /hello/;
console.log(pattern1.test("hello world")); // Output: true
console.log(pattern2.test("hello world")); // Output: true
Entrambi i modi di creare un oggetto RegExp sono equivalenti. La notazione letterale (/pattern/
) è più comunemente utilizzata a causa della sua semplicità.
Modificatori
I modificatori ci permettono di cambiare il comportamento di un pattern RegEx. Diamo un'occhiata a alcuni modificatori comuni:
Modificatore | Descrizione |
---|---|
i | Matching insensibile alle maiuscole |
g | Matching globale (trova tutte le corrispondenze, non solo la prima) |
m | Matching multilinea |
Ecco un esempio utilizzando il modificatore 'i':
let pattern = /hello/i;
let text = "Hello, World!";
console.log(pattern.test(text)); // Output: true
Ora il nostro pattern corrisponde a "Hello" indipendentemente dal caso!
Quadratrici
Le quadratrici in RegEx sono utilizzate per definire un set o un intervallo di caratteri da matchare:
Quadratrica | Descrizione |
---|---|
[abc] | Corrisponde a qualsiasi carattere tra parentesi |
[^abc] | Corrisponde a qualsiasi carattere non tra parentesi |
[0-9] | Corrisponde a qualsiasi cifra da 0 a 9 |
[a-z] | Corrisponde a qualsiasi lettera minuscola |
Vediamo un esempio:
let pattern = /[aeiou]/;
console.log(pattern.test("hello")); // Output: true
console.log(pattern.test("why")); // Output: false
Questo pattern corrisponde a qualsiasi vocale. Trova una corrispondenza in "hello" ma non in "why".
Quantificatori
I quantificatori specificano quante istanze di un carattere, un gruppo o una classe di caratteri devono essere presenti per trovare una corrispondenza.
Quantificatore | Descrizione |
---|---|
* | 0 o più occorrenze |
+ | 1 o più occorrenze |
? | 0 o 1 occorrenza |
{n} | Esattamente n occorrenze |
{n,} | n o più occorrenze |
{n,m} | Tra n e m occorrenze |
Ecco un esempio divertente:
let pattern = /ba+/;
console.log(pattern.test("b")); // Output: false
console.log(pattern.test("ba")); // Output: true
console.log(pattern.test("baaaa")); // Output: true
Questo pattern corrisponde a "ba" seguita da qualsiasi numero di "a" aggiuntivi. È come il bleat di una pecora: "baaaa"!
Caratteri Letterali
I caratteri letterali in RegEx sono proprio quelli - corrispondono a loro stessi. Ad esempio, /hello/
corrisponde alla sequenza esatta di caratteri "hello".
let pattern = /hello world/;
console.log(pattern.test("hello world")); // Output: true
console.log(pattern.test("hello earth")); // Output: false
Metacaratteri
I metacaratteri hanno significati speciali in RegEx:
Metacarattere | Descrizione |
---|---|
. | Corrisponde a qualsiasi singolo carattere |
\d | Corrisponde a qualsiasi cifra |
\D | Corrisponde a qualsiasi non-cifra |
\w | Corrisponde a qualsiasi carattere di parola |
\W | Corrisponde a qualsiasi non-carattere di parola |
\s | Corrisponde a qualsiasi carattere di spaziatura |
\S | Corrisponde a qualsiasi non-carattere di spaziatura |
Vediamo alcuni metacaratteri:
let pattern = /\d{3}-\d{3}-\d{4}/;
console.log(pattern.test("123-456-7890")); // Output: true
console.log(pattern.test("abc-def-ghij")); // Output: false
Questo pattern corrisponde a un formato tipico di numero di telefono statunitense.
Proprietà RegExp
Gli oggetti RegExp hanno diverse proprietà utili:
Proprietà | Descrizione |
---|---|
global | Se il flag "g" è impostato |
ignoreCase | Se il flag "i" è impostato |
multiline | Se il flag "m" è impostato |
source | Il testo del pattern |
lastIndex | L'indice da cui iniziare la prossima corrispondenza |
Ecco come utilizzare queste proprietà:
let pattern = /hello/gi;
console.log(pattern.global); // Output: true
console.log(pattern.ignoreCase); // Output: true
console.log(pattern.source); // Output: "hello"
Metodi RegExp
Infine, esaminiamo alcuni metodi che possiamo utilizzare con gli oggetti RegExp:
Metodo | Descrizione |
---|---|
exec() | Esegue una ricerca per una corrispondenza in una stringa |
test() | Testa per una corrispondenza in una stringa |
toString() | Restituisce una rappresentazione stringa del regexp |
Ecco un esempio utilizzando exec()
:
let pattern = /\d+/g;
let text = "I have 2 apples and 3 oranges.";
let match;
while ((match = pattern.exec(text)) !== null) {
console.log(`Found ${match[0]} at index ${match.index}`);
}
// Output:
// Found 2 at index 7
// Found 3 at index 23
Questo codice trova tutti i numeri nel testo e segnala le loro posizioni.
E voilà! Abbiamo coperto le basi delle Espressioni Regolari in JavaScript. Ricorda, la pratica rende perfetti. Prova a creare i tuoi pattern e a testarli. Prima di sapere, sarai in grado di utilizzare la RegEx per risolvere tutti i tipi di problemi di manipolazione delle stringhe con facilità!
Buon codice, e possa le tue Espressioni Regolari sempre trovare la loro corrispondenza!
Credits: Image by storyset