Skip to content

Instantly share code, notes, and snippets.

@Sturtuk
Last active August 24, 2019 17:43
Show Gist options
  • Save Sturtuk/ef21a7f837321c58fd8671ae5ae40c4e to your computer and use it in GitHub Desktop.
Save Sturtuk/ef21a7f837321c58fd8671ae5ae40c4e to your computer and use it in GitHub Desktop.
Check valid zip code (or) get a matching zip code country - All Countries
if(!function_exists('is_valid_postalCode')){
function is_valid_postalCode($code){
$regex = [
"AD" => "^(?:AD)*(\d{3})$",
"AM" => "^(\d{6})$",
"AR" => "^([A-Z]\d{4}[A-Z]{3})$",
"AT" => "^(\d{4})$",
"AU" => "^(\d{4})$",
"AX" => "^(?:FI)*(\d{5})$",
"AZ" => "^(?:AZ)*(\d{4})$",
"BA" => "^(\d{5})$",
"BB" => "^(?:BB)*(\d{5})$",
"BD" => "^(\d{4})$",
"BE" => "^(\d{4})$",
"BG" => "^(\d{4})$",
"BH" => "^(\d{3}\d?)$",
"BM" => "^([A-Z]{2}\d{2})$",
"BN" => "^([A-Z]{2}\d{4})$",
"BR" => "^(\d{8})$",
"BY" => "^(\d{6})$",
"CA" => "^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]) ?(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$",
"CH" => "^(\d{4})$",
"CL" => "^(\d{7})$",
"CN" => "^(\d{6})$",
"CR" => "^(\d{4})$",
"CU" => "^(?:CP)*(\d{5})$",
"CV" => "^(\d{4})$",
"CX" => "^(\d{4})$",
"CY" => "^(\d{4})$",
"CZ" => "^(\d{5})$",
"DE" => "^(\d{5})$",
"DK" => "^(\d{4})$",
"DO" => "^(\d{5})$",
"DZ" => "^(\d{5})$",
"EC" => "^([a-zA-Z]\d{4}[a-zA-Z])$",
"EE" => "^(\d{5})$",
"EG" => "^(\d{5})$",
"ES" => "^(\d{5})$",
"ET" => "^(\d{4})$",
"FI" => "^(?:FI)*(\d{5})$",
"FM" => "^(\d{5})$",
"FO" => "^(?:FO)*(\d{3})$",
"FR" => "^(\d{5})$",
"GB" => "GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\d{1,4}",
"GE" => "^(\d{4})$",
"GF" => "^((97|98)3\d{2})$",
"GG" => "^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$",
"GL" => "^(\d{4})$",
"GP" => "^((97|98)\d{3})$",
"GR" => "^(\d{5})$",
"GT" => "^(\d{5})$",
"GU" => "^(969\d{2})$",
"GW" => "^(\d{4})$",
"HN" => "^([A-Z]{2}\d{4})$",
"HR" => "^(?:HR)*(\d{5})$",
"HT" => "^(?:HT)*(\d{4})$",
"HU" => "^(\d{4})$",
"ID" => "^(\d{5})$",
"IL" => "^(\d{5})$",
"IM" => "^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$",
"IN" => "^(\d{6})$",
"IQ" => "^(\d{5})$",
"IR" => "^(\d{10})$",
"IS" => "^(\d{3})$",
"IT" => "^(\d{5})$",
"JE" => "^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$",
"JO" => "^(\d{5})$",
"JP" => "^(\d{7})$",
"KE" => "^(\d{5})$",
"KG" => "^(\d{6})$",
"KH" => "^(\d{5})$",
"KP" => "^(\d{6})$",
"KR" => "^(?:SEOUL)*(\d{6})$",
"KW" => "^(\d{5})$",
"KZ" => "^(\d{6})$",
"LA" => "^(\d{5})$",
"LB" => "^(\d{4}(\d{4})?)$",
"LI" => "^(\d{4})$",
"LK" => "^(\d{5})$",
"LR" => "^(\d{4})$",
"LS" => "^(\d{3})$",
"LT" => "^(?:LT)*(\d{5})$",
"LU" => "^(\d{4})$",
"LV" => "^(?:LV)*(\d{4})$",
"MA" => "^(\d{5})$",
"MC" => "^(\d{5})$",
"MD" => "^(?:MD)*(\d{4})$",
"ME" => "^(\d{5})$",
"MG" => "^(\d{3})$",
"MK" => "^(\d{4})$",
"MM" => "^(\d{5})$",
"MN" => "^(\d{6})$",
"MQ" => "^(\d{5})$",
"MT" => "^([A-Z]{3}\d{2}\d?)$",
"MV" => "^(\d{5})$",
"MX" => "^(\d{5})$",
"MY" => "^(\d{5})$",
"MZ" => "^(\d{4})$",
"NC" => "^(\d{5})$",
"NE" => "^(\d{4})$",
"NF" => "^(\d{4})$",
"NG" => "^(\d{6})$",
"NI" => "^(\d{7})$",
"NL" => "^(\d{4}[A-Z]{2})$",
"NO" => "^(\d{4})$",
"NP" => "^(\d{5})$",
"NZ" => "^(\d{4})$",
"OM" => "^(\d{3})$",
"PF" => "^((97|98)7\d{2})$",
"PG" => "^(\d{3})$",
"PH" => "^(\d{4})$",
"PK" => "^(\d{5})$",
"PL" => "^(\d{5})$",
"PM" => "^(97500)$",
"PR" => "^(\d{9})$",
"PT" => "^(\d{7})$",
"PW" => "^(96940)$",
"PY" => "^(\d{4})$",
"RE" => "^((97|98)(4|7|8)\d{2})$",
"RO" => "^(\d{6})$",
"RS" => "^(\d{6})$",
"RU" => "^(\d{6})$",
"SA" => "^(\d{5})$",
"SD" => "^(\d{5})$",
"SE" => "^(?:SE)*(\d{5})$",
"SG" => "^(\d{6})$",
"SH" => "^(STHL1ZZ)$",
"SI" => "^(?:SI)*(\d{4})$",
"SK" => "^(\d{5})$",
"SM" => "^(4789\d)$",
"SN" => "^(\d{5})$",
"SO" => "^([A-Z]{2}\d{5})$",
"SV" => "^(?:CP)*(\d{4})$",
"SZ" => "^([A-Z]\d{3})$",
"TC" => "^(TKCA 1ZZ)$",
"TH" => "^(\d{5})$",
"TJ" => "^(\d{6})$",
"TM" => "^(\d{6})$",
"TN" => "^(\d{4})$",
"TR" => "^(\d{5})$",
"TW" => "^(\d{5})$",
"UA" => "^(\d{5})$",
"US" => "^\d{5}(-\d{4})?$",
"UY" => "^(\d{5})$",
"UZ" => "^(\d{6})$",
"VA" => "^(\d{5})$",
"VE" => "^(\d{4})$",
"VI" => "^\d{5}(-\d{4})?$",
"VN" => "^(\d{6})$",
"WF" => "^(986\d{2})$",
"YT" => "^(\d{5})$",
"ZA" => "^(\d{4})$",
"ZM" => "^(\d{5})$",
"CS" => "^(\d{5})$",
];
foreach ($regex as $key => $value) {
if(preg_match("/^$value/", $code,$prefect_match)) {
if($prefect_match[0] != '') {
$match_with[$key] = $prefect_match;
}
}
}
return $match_with;
}
}
{
"US": [
"56005"
],
"DE": [
"56005",
"56005"
],
"FR": [
"56005"
],
"AU": [
"5600",
"5600"
],
"IT": [
"56005",
"56005"
],
"CH": [
"5600",
"5600"
],
"AT": [
"5600",
"5600"
],
"ES": [
"56005",
"56005"
],
"BE": [
"5600",
"5600"
],
"DK": [
"5600",
"5600"
],
"SE": [
"56005"
],
"NO": [
"5600",
"5600"
],
"PT": [
"5600"
],
"FI": [
"56005",
"56005"
],
"CN": [
"560055",
"560055"
],
"TW": [
"56005",
"05"
],
"SG": [
"560055",
"560055"
],
"DZ": [
"56005",
"56005"
],
"AR": [
"5600"
],
"AM": [
"5600"
],
"AZ": [
"5600",
"5600"
],
"BH": [
"560",
"560",
"5"
],
"BD": [
"5600",
"5600"
],
"BY": [
"560055",
"560055"
],
"BA": [
"56005",
"56005"
],
"BG": [
"5600",
"5600"
],
"KH": [
"56005",
"56005"
],
"CV": [
"5600",
"5600"
],
"CR": [
"56005"
],
"HR": [
"56005",
"56005"
],
"CY": [
"5600",
"5600"
],
"CZ": [
"56005"
],
"DO": [
"56005",
"56005"
],
"EC": [
"560055",
"560055"
],
"EG": [
"56005",
"56005"
],
"EE": [
"56005",
"56005"
],
"FO": [
"560",
"560"
],
"GE": [
"5600",
"5600"
],
"GR": [
"56005"
],
"GT": [
"56005",
"56005"
],
"HT": [
"5600",
"5600"
],
"HN": [
"56005"
],
"HU": [
"5600",
"5600"
],
"IS": [
"560",
"560"
],
"IN": [
"560055",
"560055"
],
"ID": [
"56005",
"56005"
],
"IL": [
"56005",
"56005"
],
"JO": [
"56005",
"56005"
],
"KZ": [
"560055",
"560055"
],
"KE": [
"56005",
"56005"
],
"KW": [
"56005",
"56005"
],
"LA": [
"56005",
"56005"
],
"LV": [
"5600",
"5600"
],
"LB": [
"5600",
"5600"
],
"LT": [
"56005",
"56005"
],
"LU": [
"5600",
"5600"
],
"MK": [
"5600",
"5600"
],
"MY": [
"56005",
"56005"
],
"MV": [
"56005",
"56005"
],
"MX": [
"56005",
"56005"
],
"MD": [
"5600",
"5600"
],
"MA": [
"56005",
"56005"
],
"NP": [
"56005",
"56005"
],
"NZ": [
"5600",
"5600"
],
"NG": [
"560055",
"560055"
],
"OM": [
"560"
],
"PK": [
"56005",
"56005"
],
"PY": [
"5600",
"5600"
],
"PH": [
"5600",
"5600"
],
"RO": [
"560055",
"560055"
],
"RU": [
"560055",
"560055"
],
"SA": [
"56005",
"56005"
],
"SN": [
"56005",
"56005"
],
"SK": [
"56005"
],
"SI": [
"5600",
"5600"
],
"ZA": [
"5600",
"5600"
],
"LK": [
"56005",
"56005"
],
"TJ": [
"560055",
"560055"
],
"TH": [
"56005",
"56005"
],
"TN": [
"5600",
"5600"
],
"TR": [
"56005",
"56005"
],
"TM": [
"560055",
"560055"
],
"UA": [
"56005",
"56005"
],
"UY": [
"56005",
"56005"
],
"UZ": [
"560055",
"560055"
],
"VA": [
"56005",
"56005"
],
"VE": [
"5600",
"5600"
],
"ZM": [
"56005",
"56005"
],
"AS": [
"56005",
"56005"
],
"CC": [
"5600",
"5600"
],
"CK": [
"5600",
"5600"
],
"RS": [
"560055",
"560055"
],
"CS": [
"56005",
"56005"
],
"YU": [
"56005",
"56005"
],
"CX": [
"5600",
"5600"
],
"ET": [
"5600",
"5600"
],
"NF": [
"5600",
"5600"
],
"GN": [
"560",
"560"
],
"GW": [
"5600",
"5600"
],
"HM": [
"5600",
"5600"
],
"IQ": [
"56005",
"56005"
],
"KG": [
"560055",
"560055"
],
"LR": [
"5600",
"5600"
],
"LS": [
"560",
"560"
],
"MG": [
"560",
"560"
],
"MN": [
"560055",
"560055"
],
"NE": [
"5600",
"5600"
],
"PG": [
"560",
"560"
],
"PW": [
"56005",
"56005"
],
"SJ": [
"5600",
"5600"
],
"SO": [
"56005",
"56005"
],
"XK": [
"56005",
"56005"
]
}
{
"GB": [
"M11AH",
"M11AH",
"M",
"11AH"
]
}
Check in Laravel
<?php
Route::any('zipcode_check', function (){
return response()->json(is_valid_postalCode('560055'));
});
Route::any('zipcode_check', function (){
return response()->json(is_valid_postalCode('M11AH'));
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment