Sull'argomento "Validazione Form" sono presenti altre risorse nel sito, sia sulla validazioe in generale che per specifiche necessità-
Per la validazione consultare lo
StaffScripts "From Validator" che mostrerà una maniera molto semplice e veloce per validare un form ed informare l'utente di quali sono i campi che deve controllare.
Tra le faq è sufficiente fare una
ricerca con la parola "valid", mentre fra i tutorial segnalo quello per
validare un indirizzo e-mail con una RegExp.
Una domanda fatta nel NewsGroup it.comp.lang.javascript, mi da lo spunto per un tutorial introduttivo sulle Regular Expression.
Le Espressioni Regolari (d'ora in poi "RegExp") sono una cosa di cui tutti facciamo tranquillamente a meno prima di sapere che esistono, limitandoci ai soliti metodi di estrazione e controllo di substrings dalle stringhe che vogliamo controllare, ma una volta scoperte viene spontaneo chiedersi "com'è stato possibile farne a meno finora?".
Questo messaggio apparso qualche giorno fa nel NG ne rivela la fondamentale importanza:
Newsgroups: it.comp.lang.javascript
Date: Thu, 7 Feb 2002 12:57:24 +0100
Subject: controllare il codice fiscale con regExp
From: "puma" <NOSPAMrupsd@tin.it>
ciao a tutti,
qualcuno mi aiuta a trovare una soluzione elegante per controllare l'esatta
sequenza (e non validitā formale) di numeri e lettere all'interno di un
codice fiscale?
Io avevo pensato di usare le regexp ma non sono molto pratico...
grazie |
L'intuizione di usare le RegExp è in effetti decisiva.
Per controllare "l'esatta sequenza di numeri e lettere" la prima cosa che viene in mente di fare (dopo il controllo di lunghezza) è suddividere la stringa del Codice Fiscale in 7 sottostringhe e poi darci dentro di
isNaN() per le stringhe numeriche e di controllo carattere per carattere per le sottostringhe alfabetiche.
Un codice fiscale ha infatti questa struttura tipica:
| PNCPLN |
75 |
D |
24 |
E |
506 |
W |
6 char |
2 num |
1 char |
2 num |
1 char |
3 num |
1 char |
e per controllarlo in modo "classico" ho un po' affinato il metodo delle sottostringhe creando due sole stringhe: una contenente i caratteri in cui dovrebbero trovarsi lettere, ed una quelli in cui dovrebbero esserci dei numeri, poi le ho controllate un carattere alla volta.
Un bel papocchio di codice che potete vedere nella
pagina successiva.
Le RegExp consentono di fare il tutto in modo moltopiù elegante.
Questo è lo script che usiamo nel tutorial:
<HTML>
<HEAD>
<TITLE>CodiceFiscaleRexExp</TITLE>
<SCRIPT>
<!--
function Trim(stringa)
{
reTrim=/\s+$|^\s+/g;
return stringa.replace(reTrim,"");
}
function controlla()
{
var re = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
Codice=Trim(document.modulo.codfisc.value.toUpperCase());
alert(re.test(Codice));
}
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff">
<FORM NAME="modulo">
<INPUT TYPE="text" NAME="codfisc" VALUE="pncpln75d24e506w"> <BR>
<INPUT TYPE="button" VALUE="Clicca" onClick="controlla()">
</FORM>
</BODY>
</HTML>
|
La funzione
Trim() la trovate nelle FAQ, serve a togliere eventuali spazi che l'utente avesse inserito erroneamente prima o dopo la stringa.
Quello che ci interessa ovviamente è la riga in grassetto rosso.
Nella prossima pagina introdurrò alcune cose basilari delle RegExp che ho usato nello script.
Di fatto un'introduzione alle Regular Expression stesse.
12/11/2002- Nelle FAQ sono da oggi disponibili due contributi di
Effe8 (dal newsgroup it.comp.lang.javascript) per il
controllo del Codice Fiscale e della Partita IVA
Gli script proposti sono basati sugli algoritmi del Ministero delle Finanze ed effettuano anche il controllo di validità (sia della P.IVA che del Cod.Fisc.) usando gli appositi caratteri di controllo.