Espressione regolare per validare un codice postale

Espressione regolare per validare un codice postale

La seguente espressione regolare permette di testare un codice postale francese nel formato «DDDDD». Si usano tutte le cifre. Le prime due indicano il dipartimento e vanno da 01 a 98. Il codice qui sotto è l’espressione regolare di un codice postale, per verificare se il formato è corretto.

espressione regolare codice postale

javascript
/^(?:0[1-9]|[1-8]\d|9[0-8])\d{3}$/

Ti propongo anche diverse espressioni regolari di codici postali a seconda del paese: ti basta sostituire l’espressione con quella che ti serve.

Belgio

Codici postali nel formato «DDDD»: la prima cifra rappresenta la provincia, le altre i settori di distribuzione. I codici postali non iniziano con zero.

javascript
/^(?:(?:[1-9])(?:\d{3}))$/
Svizzera

Quattro cifre: la prima è il distretto, la seconda la zona, la terza il percorso, la quarta il numero dell’ufficio postale.

javascript
/^[1-9]\d{3}$/
Regno Unito

Schema del codice postale britannico

javascript
/^(?:GIR 0AA|(?:(?:(?:A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGK-PRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?\d|(?:(?:E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(?:SW|W)(?:[2-9]|[1-9]\d)|EC[1-9]\d)\d[ABD-HJLNP-UW-Z]{2}))$/i
Germania

Codici postali nel formato «DDDDD». Si usano tutte le cifre. La prima corrisponde alla zona di distribuzione, la seconda alla regione di distribuzione. Le altre indicano il distretto di recapito e la località postale.

javascript
/^\d{5}$/
Spagna

Cinque cifre: le prime due indicano la provincia. Terza cifra: grande città. Ultime due cifre: le zone rurali.

javascript
/^(?:0[1-9]|[1-4]\d|5[0-2])\d{3}$/
Italia

Prima cifra: regione. Seconda cifra: provincia. Terza cifra: capoluogo o provincia (dispari per il capoluogo). Quarta cifra: itinerario. Quinta cifra: località dell’itinerario (0 per le località piccole).

javascript
/^\d{5}$/
Stati Uniti

Codici postali nel formato «DDDDD» o «DDDDD-DDDD». Si usano tutte le cifre e nessuna ha un significato particolare.

javascript
/^(?:GIR 0AA|(?:(?:(?:A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGK-PRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?\d|(?:(?:E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(?:SW|W)(?:[2-9]|[1-9]\d)|EC[1-9]\d)\d[ABD-HJLNP-UW-Z]{2}))$/i

Versione JavaScript dell’espressione regolare per un codice postale

Il formato di codice postale valido è «DDDDD». La funzione riceve il codice postale come parametro e lo confronta con l’espressione regolare. Se non trova nessuna corrispondenza la validazione fallisce e restituisce false, se la trova, restituisce true.

Funzione JavaScript di un’espressione regolare per il codice postale

javascript
/**
 * Valida un codice postale con un'espressione regolare
 *
 * Se il codice postale non è valido, restituisce false
 *
 * @param postcode
 * @return Boolean
 */
function validatePostcode(postcode){
    var Reg = new RegExp(/^(?:0[1-9]|[1-8]\d|9[0-8])\d{3}$/i);
    return Reg.test(postcode);
}

Come usare la funzione JavaScript

Il modo migliore di usarla è dentro una condizione IF, come qui sotto.

javascript
if(validatePostcode(postcode)){
     alert("Code postal valide");
} else {
     alert("Code postal invalide");
}

See the Pen
Untitled
by Damien Flandrin (@dam62500)
on CodePen.0

Versione PHP dell’espressione regolare per un codice postale

Per essere sicuro dei codici postali, oltre al controllo lato front conviene validare anche sul server. Ecco uno snippet PHP per validare i codici postali lato server.

Funzione PHP di un’espressione regolare per il codice postale

php
/*
 * valida il codice postale
 * @param $postcode
 */
function isValidPostcode($postcode)
{
    return preg_match('/^(?:0[1-9]|[1-8]\d|9[0-8])\d{3}$/i', $postcode);
}

Versione HTML

In HTML si possono creare campi che verificano se il valore è valido con l’attributo pattern di <input>: lì puoi indicare l’espressione regolare di un codice postale. Attenzione, serve solo a mostrare l’informazione visivamente all’utente, per esempio con dei bordi rossi.

html
<input
      name="postcode"
      type="text"
      pattern="(?:0[1-9]|[1-8]\d|9[0-8])\d{3}"
      placeholder="DDDDD"
     />

See the Pen
Valider un code postal avec une expression régulière en HTML
by Damien Flandrin (@dam62500)
on CodePen.0

HTMLJavaScriptPHP

Damien Flandrin Sviluppatore web dal 2010, creatore di Gekkode e di Email Impact. Ogni articolo è testato su un progetto reale prima della pubblicazione. Contatti
Newsletter

I nuovi test, tutorial e progetti, via e-mail.

Test riproducibili, codice versionato, risultati datati. Mai spam.