Newsgroup: it.comp.lang.javascript
Titolo: Controllo codice fiscale valido.

Ciao a tutti,
mi sto addentrando nella programmazione javascript,
dovrei controllare il codice fiscale (ccccccnncnncnnnc) usando le 
espressioni regolari..
come posso fare consigli?



non usare regexp ... mi sembra un po' assurdo, deve fare i vari calcoli per
il controllo...alla fin fine dovresti usare regexp con una function per le
verifiche.
Se cerchi con google troverai un fantastiliardo di script già fatti:
http://www.google.it/search?sourceid=navclient&hl=it&ie=UTF-8&rls=GGLD,GGLD:2004-29,GGLD:it&q=javascript+codice+fiscale
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

ti ringrazio ma essendo per l'uni la prof ci ha espressamente scritto di 
usare le espressioni regolari..che palle..e ora come faccio..:-(
Il modulo può essere inviato solo se "passa" i seguenti controlli:
    1. I campi obbligatori devono essere compilati.
    2. L'e-mail e il codice fiscale (ccccccnncnncnnnc) devono essere 
controllati usando le espressioni regolari.

 usare le espressioni regolari..che palle..e ora come faccio..:-(
Fai una ricerca con google, qualcuno l'avrà immagino già fatto.
Per i campi obbligatori ok, dovresti saperlo fare
e-mail: trovi tantissime regexp per verificare il formato di un indirizzo
mail
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

ti ringrazio..
il resto l'ho già fatto tutto..anche la mail..
mi manca sta parte.

 mi manca sta parte.
Cerca con google, ho visto che ce ne sono a bizzeffe anche via regexp,
esempio
 
http://www.jsdir.com/tutorials/cfregexp.asp
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

sto usando questo che funziona..
function codiceFISCALE(cfins)
    {
    var cf = cfins.toUpperCase();
    var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
    if (!cfReg.test(cf))
       return false;
    var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
    var s = 0;
    for( i = 1; i <= 13; i += 2 )
       s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
    for( i = 0; i <= 14; i += 2 )
       s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
    if ( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
       return false;
    return true;
  }
se a qlc può servire..
l'unica cosa è che non capisco molto bene che fà.. :-(

 sto usando questo che funziona..
Sě, solo che non usa regexp ... come ti dicevo mi sembra una baggianata
usare regexp (se non, come fa nel tuo caso, per la verifica escludendo il
carattere di controllo).
Poi il funzionamento č semplice: studiati come si calcola il carattere di
controllo (hai un set di caratteri per le posizioni pari, uno per le
posizioni dispari, poi ...)
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

gią..
ad esempio la funziona:
  function isNome(nome)
{
    var i=new RegExp("([a-zA-Z\ ]{3,})");
    if(!i.test(what)) { return false}
    return true;
}
ad esempio la va i č formata da caratteri che possono andare dalla a 
minuscola alla z e dalla A maiscola alla Z maiscola e devono essere 
formati da almeno 3 caratteri...capito bene?

 formati da almeno 3 caratteri...capito bene?
Ah ok, non avevo capito che non conoscevi il linguaggio delle regexp (come
hai fatto p.e. a fare quella per la e-mail?)
Comunque sia sì, [...] identifica 1 carattere, e dice "tutte le lettere
maiuscole o minuscole oppure ... non capisco bene cosa sia quel \
(\+spazio). Dopo indica quanti, formato {minimo,massimo}; in questo caso è
specificato solo il minimo.
In rete trovi miriadi di microcorsi su questo pseudolinguaggio, es.
 
http://www.regular-expressions.info/
 
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

Ti ringrazio per le risposte..
per la mail ho usato questa:
function isEmailAddr(email)
{
   var result = false;
   var theStr = new String(email);
   var index = theStr.indexOf("@");
   if (index > 0)
   {
     var pindex = theStr.indexOf(".",index);
     if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
   }
   return result;
}
cmq ora cerco di fare una funzione semplice che controlla appunto il 
codice fiscale..
(ccccccnncnncnnnc)
che controlli che ci siano 7 caratteri e numeri un carattere due numeri 
un carattere 3 numeri un carattere..dovrebbe essere semplice.

 un carattere 3 numeri un carattere..dovrebbe essere semplice.
Scusami, ma lo fa già quella che hai postato (6 caratteri iniziali, non
7...): 
 /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

   /^[a-z0-9.\-_]+\@[a-z0-9.\-]+\.[a-z]{2,4}$/gi
hai ragione grazie di tutto.
Saluti
Danilo

   /^[a-z0-9.\-_]+\@[a-z0-9.\-]+\.[a-z]{2,4}$/gi
mmm
commento semiOT... volendo fare le cose per bene, *LA* regexp per la
validazione degli indirizzi email e' quella presente su
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
:P
-- 
         Quante sono le persone
che sanno leggere il codice esadecimale,
        se ci sono de11e persone
che sanno leggere il codice esadecimale?

 
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
:-O No, grazie, preferisco vivere ... :-) 
(qualcuno la avrà mai provata con javascript? funziona? [parla di Perl,
javascript ha una sintassi che è un sottoinsieme di Perl, anche se non
ricordo quale "comando" avevo rilevato mancante ai tempi, ma temo fosse
proprio un giochetto con ?: ])
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.