|
Regular Expression: abbreviazioni, vincoli ai charset e di posizione
Un altro elemento che troviamo nella nostra RegExp del codice fiscale sono le parentesi graffe.
Queste servono per definire il numero di occorrenze della stringa o dei caratteri nel set: cioè {n} (dove "n" è un intero positivo), cerca esattamente "n" occorrenze (nel nostro caso) di lettere maiuscole: [A-Z]{6}. Ecco verificato che nel nostro codice fiscale ci siano esattamente 6 caratteri alfabetici.
Ci sono altri due possibili usi delle parentesi graffe:
1.- {n,} che vuol dire cerca almeno n occorrenze;
Per esempio /a{2,}/ non troverà la "a" di "Java", ma troverà le prime due "a" in "Jaaaaaava" e non le rimanenti.
2.- {n,m} che significa cerca almeno n ed al massimo m occorrenze
Quindi /a{2,3}/ non troverà nulla in "Java", ma troverà le prime due e le prime tre "a" in "Jaaaaaava" ignorando le "a" rimanenti.
Vediamo un po' di abbreviazioni.
La più semplice è quella che sostituisce il set [0-9] e che è \d.
L'insieme di tutte le lettere maiuscole, minuscole e cifre si può rappresentare con a-zA-Z0-9 aggiungendo cioè il set delle cifre a quelli delle lettere. Questo set si può rappresentare con \w.
Ad esempio se volessimo verificare che in un TEXTBOX l'utente abbia inserito solo delle cifre potremmo, con le RegExp, usare 0-9 oppure \d indifferentemente.
Attenzione che il metodo isNaN() non ci servirebbe in questo caso, perché controlla i numeri e non le cifre, ed i numeri possono anche contenere il punto e/o il segno: quindi -123.4 sarebbe si un numero che passerebbe il controllo di isNaN(), ma non sarebbe solo un'insieme di cifre, com'è un CAP ad esempio.
Analogamente per verificare che nel solito TEXTBOX ci siano solo lettere e numeri potremmo usare \w, ma se volessimo solo lettere minuscole e numeri dovremmo tornare al charset usando [a-z0-9].
Vi assicuro che non è così contorto come sembra, almeno finché ci limitiamo a questi controlli più spiccioli.
Due altri caratteri speciali che ho usato nella RegExp del codice fiscale sono il caret " ^ " ed il simbolo del dollaro $.
Noi vogliamo infatti che i 6 caratteri alfabetici stiano all'inizio, e che l'ultimo carattere si ancora una lettera.
Ad imporre queste due condizioni ci pensano questi ultimi due caratteri speciali:
- il caret ^ significa la stringa o il charset che segue deve trovarsi all'inizio della stringa su cui lavora la RegExp;
- il segno del dollaro $ significa che la stringa o il charset che lo precede si deve trovare alla fine.
Nella prossima pagina torniamo allo script e concludiamo il tutorial.
|