diff --git a/library/Rules/PostalCode.php b/library/Rules/PostalCode.php index 600198db..518c49e1 100644 --- a/library/Rules/PostalCode.php +++ b/library/Rules/PostalCode.php @@ -21,157 +21,166 @@ class PostalCode extends Regex * @link http://download.geonames.org/export/dump/countryInfo.txt */ public $postalCodes = [ - '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})|(\d{3}\040\d{2}))$/", - '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})$/", + 'AD' => '/^(?:AD)*(\d{3})$/', + 'AL' => '/^(\d{4})$/', + 'AM' => '/^(\d{6})$/', + 'AR' => '/^[A-Z]?\d{4}[A-Z]{0,3}$/', + 'AS' => '/96799/', + '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?)$/', + 'BL' => '/^(\d{5})$/', + 'BM' => '/^([A-Z]{2}\d{2})$/', + 'BN' => '/^([A-Z]{2}\d{4})$/', + 'BR' => '/^\d{5}-?\d{3}$/', + 'BY' => '/^(\d{6})$/', + 'CA' => '/^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]) ?(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$ /', + 'CH' => '/^(\d{4})$/', + 'CL' => '/^(\d{7})$/', + 'CN' => '/^(\d{6})$/', + 'CO' => '/^(\d{6})$/', + 'CR' => '/^(\d{5})$/', + 'CS' => '/^(\d{5})$/', + 'CU' => '/^(?:CP)*(\d{5})$/', + 'CV' => '/^(\d{4})$/', + 'CX' => '/^(\d{4})$/', + 'CY' => '/^(\d{4})$/', + 'CZ' => '/^\d{3}\s?\d{2}$/', + '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})$/", + 'GE' => '/^(\d{4})$/', + 'GF' => '/^((97|98)3\d{2})$/', + 'GG' => '/^((?:(?:[A-PR-UWYZ][A-HK-Y]\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\d[A-HJKPS-UW0-9])\s\d[ABD-HJLNP-UW-Z]{2})|GIR\s?0AA)$/', + '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})$/', + 'IE' => '/^[A-Z]\d{2}$|^[A-Z]{3}[A-Z]{4}$/', + 'IL' => '/^(\d{5})$/', + 'IM' => '/^((?:(?:[A-PR-UWYZ][A-HK-Y]\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\d[A-HJKPS-UW0-9])\s\d[ABD-HJLNP-UW-Z]{2})|GIR\s?0AA)$/', + 'IN' => '/^(\d{6})$/', + 'IQ' => '/^(\d{5})$/', + 'IR' => '/^(\d{10})$/', + 'IS' => '/^(\d{3})$/', + 'IT' => '/^(\d{5})$/', + 'JE' => '/^((?:(?:[A-PR-UWYZ][A-HK-Y]\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\d[A-HJKPS-UW0-9])\s\d[ABD-HJLNP-UW-Z]{2})|GIR\s?0AA)$/', + 'JO' => '/^(\d{5})$/', + 'JP' => '/^\d{3}-\d{4}$/', + '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' => '/^(?:L-)?\d{4}$/', + 'LV' => '/^(?:LV)*(\d{4})$/', + 'MA' => '/^(\d{5})$/', + 'MC' => '/^(\d{5})$/', + 'MD' => '/^MD-\d{4}$/', + 'ME' => '/^(\d{5})$/', + 'MF' => '/^(\d{5})$/', + 'MG' => '/^(\d{3})$/', + 'MH' => '/^969\d{2}(-\d{4})$/', + 'MK' => '/^(\d{4})$/', + 'MM' => '/^(\d{5})$/', + 'MN' => '/^(\d{6})$/', + 'MP' => '/^9695\d{1}$/', + 'MQ' => '/^(\d{5})$/', + 'MT' => '/^[A-Z]{3}\s?\d{4}$/', + '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}|\d{4}-\d{3})$/", + 'PR' => '/^00[679]\d{2}(?:-\d{4})?$/', + 'PT' => '/^\d{4}-?\d{3}$/', '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})$/", + '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{3}\s\d{2}$/', + 'SG' => '/^(\d{6})$/', 'SH' => '/^(STHL1ZZ)$/', - 'SI' => "/^(?:SI)*(\d{4})$/", - 'SK' => "/^((\d{5})|(\d{3}\040\d{2}))$/", - 'SM' => "/^(4789\d)$/", - 'SN' => "/^(\d{5})$/", - 'SO' => "/^([A-Z]{2}\d{5})$/", - 'SV' => "/^(?:CP)*(\d{4})$/", - 'SZ' => "/^([A-Z]\d{3})$/", + 'SI' => '/^(?:SI)*(\d{4})$/', + 'SJ' => '/^(\d{4})$/', + 'SK' => '/^\d{3}\s?\d{2}$/', + '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})$/", + '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' => '/^008\d{2}(?:-\d{4})?$/', + 'VN' => '/^(\d{6})$/', + 'WF' => '/^(986\d{2})$/', + 'YT' => '/^(\d{5})$/', + 'ZA' => '/^(\d{4})$/', + 'ZM' => '/^(\d{5})$/', ]; public $countryCode; diff --git a/tests/unit/Rules/PostalCodeTest.php b/tests/unit/Rules/PostalCodeTest.php index 69018d98..ba7bcf21 100644 --- a/tests/unit/Rules/PostalCodeTest.php +++ b/tests/unit/Rules/PostalCodeTest.php @@ -95,6 +95,7 @@ class PostalCodeTest extends \PHPUnit_Framework_TestCase ['NL', '1012GX'], ['PT', '3660-606'], ['PT', '3660606'], + ['CO', '110231'], ]; }