Se si ha una stringa come la seguente: +7(903)-123-45-67 e si vogliono trovare tutti i numeri che contiene ma, diversamente da prima, non siamo interessati alle singole cifre bensì agli interi numeri: 7, 903, 123, 45, 67.
Se definisce numero un sequenza di una o più cifre \d, per marcare quanti ne servono si deve aggiungere in coda un quantificatore.
Quantità {n}
Il quantificatore più semplice è un numero tra parentesi graffe {n}.
Un quantificatore si appende a un carattere (o a una classe di caratteri [...] un set, ecc…) specificando quante volte questo debba essere ripetuto.
Si riportano alcune forme avanzate, eccone alcuni esempi:
- Il conteggio esatto:
{5} -
\d{5}denota esattamente 5 cifre, identico a\d\d\d\d\d.Nell’esempio sottostante si cerca un numero a 5 cifre:
alert( "Ho 12345 anni".match(/\d{5}/) ); // "12345"Si può aggiungere
\bper escludere i numeri più lunghi:\b\d{5}\b. - L’intervallo:
{3,5}, trova da 3 a 5 ripetizioni. -
Per trovare i numeri da 3 a 5 cifre si possono mettere i limiti tra parentesi graffe:
\d{3,5}alert( "Non ho 12 anni 12, ma 1234".match(/\d{3,5}/) ); // "1234"Si può tralasciare il limite superiore.
In questo caso la regexp
\d{3,}cercherà successioni di cifre lunghe3o più:alert( "Non ho 12 anni, ma 345678".match(/\d{3,}/) ); // "345678"
Torniamo alla stringa: +7(903)-123-45-67.
Un numero è una sequenza di una o più cifre in successione, dunque l’espressione regolare sarà \d{1,}:
let str = "+7(903)-123-45-67";
let numeri = str.match(/\d{1,}/g);
alert(numeri); // 7,903,123,45,67
Abbreviazioni
Sono presenti abbreviazioni per i quantificatori di uso più comune:
+-
Significa “uno o più”, identico a
{1,}.Ad esempio,
\d+cerca i numeri:let str = "+7(903)-123-45-67"; alert( str.match(/\d+/g) ); // 7,903,123,45,67 ?-
Significa “zero o uno” identico a
{0,1}. In altri termini rende il simbolo opzionale.Ad esempio, il pattern
ou?rcercaoseguito opzionalmente dau, quindi dar.Dunque,
colou?rtrova siacolorchecolour: