HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //home/posscale/subdomains/xibo/vendor/respect/validation/library/Rules/PostalCode.php
<?php

namespace Respect\Validation\Rules;

use Respect\Validation\Exceptions\ComponentException;

class PostalCode extends Regex
{
    const DEFAULT_PATTERN = '/^$/';

    /**
     * @link http://download.geonames.org/export/dump/countryInfo.txt
     */
    public $postalCodes = array(
        "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}|\d{5}-\d{3})$/",
        "BY" => "/^(\d{6})$/",
        "CA" => "/^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]) ?(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$/",
        "CH" => "/^(\d{4})$/",
        "CL" => "/^(\d{7})$/",
        "CN" => "/^(\d{6})$/",
        "CR" => "/^(\d{4})$/",
        "CS" => "/^(\d{5})$/",
        "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" => "/^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$/",
        "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{2}-\d{3})$/",
        "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})$/",
    );

    public function __construct($countryCode, CountryCode $countryCodeRule = null)
    {
        $countryCodeRule = $countryCodeRule ?: new CountryCode();
        if (! $countryCodeRule->validate($countryCode)) {
            throw new ComponentException(sprintf('Cannot validate postal code from "%s" country', $countryCode));
        }

        $regex = self::DEFAULT_PATTERN;
        $upperCountryCode = strtoupper($countryCode);
        if (isset($this->postalCodes[$upperCountryCode])) {
            $regex = $this->postalCodes[$upperCountryCode];
        }

        parent::__construct($regex);
    }
}