PDA

Visualizza la versione completa : [REGEX] Espressione regolare per Codice Fiscale


gygabyte017
02-05-2006, 19:59
Una regex per validare il codice fiscale che mi venuta in mente :

^[A-Z]{6}[0-9]{2}[A-Z][0-9]{2}[A-Z][0-9]{3}[A-Z]$

secondo voi esatta? ce ne sono di migliori?
Perch ho iniziato a studiare le regex da poco e non sono sicuro di fare le cose x bene...

:ciauz: :ciauz:

newbie
03-05-2006, 17:44
Originariamente inviato da gygabyte017
Una regex per validare il codice fiscale che mi venuta in mente :

^[A-Z]{6}[0-9]{2}[A-Z][0-9]{2}[A-Z][0-9]{3}[A-Z]$

secondo voi esatta? ce ne sono di migliori?
Perch ho iniziato a studiare le regex da poco e non sono sicuro di fare le cose x bene...

:ciauz: :ciauz:

E' praticamente perfetta... comunque io aggiungerei un controllo pi selettivo per quanto riguarda il carattere corrispondente al mese che, se non sbaglio, comprende solo ALCUNE lettere e non tutte (ad esempio mi pare che non ci siano la F, la Q, non so quali altre).
A parte questo... un ottimo esempio di pezzo di codice da copiare e incollare quando serve... :yuppi:

:ciauz:

nightfly83
01-06-2008, 11:48
Credo che questa espressione regolare sia ottimizzata ulteriormente, anche perch alla base ci sta lo studio dei vari campi che formano il codice fiscale. Fatemi sapere cosa ne pensate.
^[a-zA-Z]{6}[0-9]{2}[abcdehlmprstABCDEHLMPRST]{1}[0-9]{2}([a-zA-Z]{1}[0-9]{3})[a-zA-Z]{1}$
/*tra le tonde vi l'identificativo del comune (codice catastale). Le lettere elencate (abcd ecc.) indicano il mese di nascita mentre l'ultima lettera quella di controllo.*/

MItaly
01-06-2008, 21:28
Secondo me per avere la certezza di avere tra le mani un codice fiscale almeno sintatticamente valido ne andrebbe effettuato il parsing per bene, verificando che la lettera del mese di nascita (che pu essere solo alcune lettere), la parte del comune di nascita (che pu essere solo un codice catastale di comune valido) e il codice di controllo siano validi.

nightfly83
02-06-2008, 10:03
Se leggi bene l'espressione regolare sono presenti SOLO le lettere che identificano il mese di nascita. Per quanto riguarda il codice catastale si potrebbe inserire quello di ogni comune all'interno di una sottostringa ed alternare ognuna di esse con un OR (lavoro ESAGERATO). Il codice di controllo, invece, una qualsiasi lettera dell'alfabeto (vedi l'espressione), per verificare che sia esatto bisogna operare al di fuori della regex stessa, tramite calcoli numerici specifici (per intenderci, lo si dovrebbe calcolare all'interno dello script e non mediante l'espressione regolare). Spero di essere stato chiaro, :ciauz:

Proteo33
07-09-2008, 12:32
In linea di massima va bene, ma non perfetto perch non tiene conto delle omocodie:
^[A-Z]{6}[A-Z0-9]{2}[A-Z][A-Z0-9]{2}[A-Z][A-Z0-9]{3}[A-Z]$

Loading