14 maggio 2011

javascript: regular expression targa italiana

Indice dei tutorials: http://gheryd.blogspot.com/2011/06/javascript-gwt-tutorials.html

Questa regular expression server per testare il corretto formato per le targhe italiane sia nuovo (AA123BB) che vecchio tipo (MI12345, MI123456, ROMA12345, ROMA123456):

var targaRExp = /^(([a-zA-Z]{2}\d{3}[a-zA-Z]{2})|(([a-zA-Z]{2}|roma)(\d{5}|\d{6})))$/i
var targa = prompt("inserire una targa:");
if( targaRExp.test(targa) ) {
alert("formato targa corretto");
}else {
alert("formato targa scorretto");
}

5 commenti:

  1. grande gheryd sono io, nel game Kallithea.
    ottimo blog per imparare del codice...

    RispondiElimina
  2. Ciao ottima regola. C'è un problema, nelle nuove targhe ad esempio AA123BB non è possibile inserire le seguenti lettere "qiuo" nelle prime 2 e nelle ultime 2 lettere. per il resto è perfetto

    RispondiElimina
    Risposte
    1. Uhmmm... non proprio, anzi non esattissimo.

      Tutte le lettere non comprendono i,o,q, u come scrivi tu, ma in particolar modo la SECONDA lettera non compende neanche la lettera E.
      Quindi deve essere specificato un intervallo CUSTOM (come sotto) ma solo per le targhe -AUOTVEICOLI- perchè i CICLOMOTORI e MOTOVEICOLI hanno altre regole:

      /[A-D][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /[E-F][A-D]\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /[E-F][F-H]\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /[E-F][J-N]\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /[E-F][P]\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /[E-F][R-T]\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /[E-F][V-Z]\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /F[A-H]\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /XA\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /YA\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i
      /Z[A-B]\d{3}[A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z][A,B,C,D,E,F,G,H,J,K,L,M,N,P,R,S,T,V,W,X,Y,Z]/i

      Il mio problema è un altro:
      il pattern non si ferma al numero delle lettere max (7) ma va oltre anche mettendo il dollaro...

      la mia sintassi sarebbe questa:
      m/[a-d][a-d]\d{3}[a-d][a-d]/i

      esempio:
      DD123AA --->OK
      DD123A --->NO
      DD123AAA --->OK *E NON DOVREBBE ESSERLO!

      Qualche idea?
      Ciao.
      G.

      Elimina
  3. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  4. Ho cercato una regular expression che gestisse correttamente il formato targhe italiane per autoveicoli del 1994, ma nessuna che gestisse correttamente le esclusioni (I, O, Q, U ed Escursionisti Esteri).
    Così l'ho fatta da me. 😝

    /(?!EE)(?!Ee)(?!eE)(?!ee)[A-HJ-NPR-TV-Za-hj-npr-tv-z]{2}\d{3}[A-HJ-NPR-TV-Za-hj-npr-tv-z]{2}\b/g

    https://regexr.com/5g1nc

    RispondiElimina