Regex kodu pocztowego: walidacja w JavaScripcie, PHP i HTML

Regex kodu pocztowego: walidacja w JavaScripcie, PHP i HTML

Poniższe wyrażenie regularne sprawdza francuski kod pocztowy w postaci „DDDDD”. Wykorzystane są wszystkie cyfry. Dwie pierwsze oznaczają departament i mieszczą się w zakresie od 01 do 98. Kod poniżej to wyrażenie regularne kodu pocztowego, które kontroluje poprawność formatu.

wyrażenie regularne kodu pocztowego

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

Proponuję też wyrażenia regularne kodów pocztowych dla innych krajów, wystarczy podmienić wyrażenie na to, którego potrzebujesz.

Belgia

Kody pocztowe w postaci „DDDD”, gdzie pierwsza cyfra to prowincja, a pozostałe sektory doręczeń. Belgijskie kody pocztowe nigdy nie zaczynają się od zera.

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

Cztery cyfry: pierwsza to okręg, druga strefa, trzecia trasa, czwarta numer urzędu pocztowego.

javascript
/^[1-9]\d{3}$/
Wielka Brytania

Schemat brytyjskiego kodu pocztowego

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
Niemcy

Kody pocztowe w postaci „DDDDD”. Wykorzystane są wszystkie cyfry. Pierwsza odpowiada strefie doręczeń, druga regionowi doręczeń. Pozostałe wskazują okręg doręczeń i miejscowość pocztową.

javascript
/^\d{5}$/
Hiszpania

Pięć cyfr, dwie pierwsze wskazują prowincję. Trzecia cyfra: duże miasto. Dwie ostatnie: obszary wiejskie.

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

Pierwsza cyfra: region. Druga cyfra: prowincja. Trzecia cyfra: stolica albo prowincja (nieparzysta dla stolicy). Czwarta cyfra: trasa. Piąta cyfra: miejsce na trasie (0 dla małych miejscowości).

javascript
/^\d{5}$/
Stany Zjednoczone

Kody ZIP w postaci „DDDDD” albo „DDDDD-DDDD”. Wykorzystane są wszystkie cyfry i żadna nie ma szczególnego znaczenia.

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

Wersja JavaScript wyrażenia regularnego dla kodu pocztowego

Poprawny format kodu pocztowego to „DDDDD”. Funkcja przyjmuje kod pocztowy jako parametr i porównuje go z wyrażeniem regularnym. Jeśli nie znajdzie dopasowania, walidacja się nie udaje i funkcja zwraca false, a przy dopasowaniu zwraca true.

Funkcja JavaScript z wyrażeniem regularnym kodu pocztowego

javascript
/**
 * Walidacja kodu pocztowego wyrażeniem regularnym
 *
 * Jeśli kod pocztowy jest nieprawidłowy, zwróć 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);
}

Jak używać tej funkcji JavaScript

Najlepiej użyć jej w instrukcji IF, tak jak poniżej.

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

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

Wersja PHP wyrażenia regularnego dla kodu pocztowego

Sprawdzanie kodów pocztowych po stronie front-endu nie wystarczy: ta sama kontrola musi zadziałać na serwerze. Oto snippet w PHP, który waliduje kody pocztowe po stronie serwera.

Funkcja PHP z wyrażeniem regularnym kodu pocztowego

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

Wersja HTML

W HTML-u można zbudować pola, które same pokazują, czy wartość jest poprawna, dzięki atrybutowi pattern w <input>, gdzie wpisujesz wyrażenie regularne kodu pocztowego. Uwaga: to przydaje się wyłącznie do pokazania informacji użytkownikowi, na przykład czerwoną ramką.

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

See the Pen
Walidacja kodu pocztowego wyrażeniem regularnym w HTML
by Damien Flandrin (@dam62500)
on CodePen.

HTMLJavaScriptPHP

Damien Flandrin Web developer od 2010 roku, twórca Gekkode i Email Impact. Każdy artykuł jest sprawdzany na prawdziwym projekcie przed publikacją. Kontakt
Newsletter

Nowe testy, poradniki i projekty — e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.