Introduzione alle espressioni regolari in JavaScript
Le espressioni regolari sono comandi per la ricerca e sostituzione complessa (o semplicemente ricerca). Permettono di fare cose molto interessanti, ma, sfortunatamente, sono piuttosto difficili da apprendere.
Esistono diversi metodi JavaScript per
lavorare con le espressioni regolari. Inizieremo
a familiarizzare con loro usando l'esempio di replace
- hai già familiarità con questo metodo: il suo primo
parametro accetta cosa sostituire, e il secondo
- con cosa sostituire. E il metodo stesso viene applicato
alla stringa in cui viene effettuata la sostituzione:
'bab'.replace('a', '!'); // restituirà 'b!b'
Come primo parametro di questo metodo si può passare
non solo una stringa, ma un'espressione regolare.
Un'espressione regolare è un insieme
di comandi, posizionati all'interno degli slash /. Questi
slash sono chiamati delimitatori delle espressioni
regolari.
Le espressioni regolari stesse sono composte da due tipi di caratteri: quelli che rappresentano se stessi e quelli di comando, che sono chiamati caratteri speciali.
Le lettere e i numeri rappresentano se stessi. Nel prossimo
esempio, usando un'espressione regolare
sostituiremo la lettera 'a' con !:
'bab'.replace(/a/, '!'); // restituirà 'b!b'
Il punto, invece, è un carattere speciale
e rappresenta qualsiasi carattere. Nel prossimo
esempio troveremo una stringa con questo modello:
lettera 'x', poi qualsiasi carattere, poi
di nuovo la lettera 'x':
'xax eee'.replace(/x.x/, '!'); // restituirà '! eee'
Dopo i delimitatori si possono scrivere i modificatori
- comandi che modificano le proprietà generali
dell'espressione regolare. Ad esempio, il modificatore
g attiva la modalità di ricerca e sostituzione
globale - senza di esso l'espressione regolare cerca solo
la prima corrispondenza, mentre con esso - tutte le corrispondenze.
Nel prossimo esempio non è specificato il modificatore
g e l'espressione regolare troverà solo la prima
corrispondenza:
'aab'.replace(/a/, '!'); // restituirà '!ab'
E ora l'espressione regolare troverà tutte le corrispondenze:
'aab'.replace(/a/g, '!'); // restituirà '!!b'
Data la stringa:
let str = 'ahb acb aeb aeeb adcb axeb';
Scrivi un'espressione regolare che trovi le stringhe
'ahb', 'acb', 'aeb'
secondo il modello: lettera 'a', qualsiasi carattere,
lettera 'b'.
Data la stringa:
let str = 'aba aca aea abba adca abea';
Scrivi un'espressione regolare che trovi le stringhe
'abba', 'adca', 'abea'
secondo il modello: lettera 'a', 2
caratteri qualsiasi, lettera 'a'.
Data la stringa:
let str = 'aba aca aea abba adca abea';
Scrivi un'espressione regolare che trovi le stringhe
'abba' e 'abea', senza catturare
'adca'.