我正在寻找最终的邮政编码和邮政编码正则表达式。我正在寻找一种能覆盖世界大部分地区(希望是所有地区)的东西。


当前回答

除了航运之外,有一个准确的邮政编码还有其他原因。从事跨境旅游的旅行社(当然欧元区除外)需要提前向当局提供这些信息。通常这些信息是由一个可能熟悉也可能不熟悉这些东西的代理输入的。任何可以减少错误的方法都是好主意

然而,编写一个覆盖世界上所有邮政编码的正则表达式将是疯狂的。

其他回答

使用这些regx

$ZIPREG=array(
    "US"=>"^\d{5}([\-]?\d{4})?$",
    "UK"=>"^(GIR|[A-Z]\d[A-Z\d]??|[A-Z]{2}\d[A-Z\d]??)[ ]??(\d[A-Z]{2})$",
    "DE"=>"\b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-24-9]\d{3})|(?:[6][013-9]\d{3}))\b",
    "CA"=>"^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ])\ {0,1}(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$",
    "FR"=>"^(F-)?((2[A|B])|[0-9]{2})[0-9]{3}$",
    "IT"=>"^(V-|I-)?[0-9]{5}$",
    "AU"=>"^(0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2})$",
    "NL"=>"^[1-9][0-9]{3}\s?([a-zA-Z]{2})?$",
    "ES"=>"^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$",
    "DK"=>"^([D|d][K|k]( |-))?[1-9]{1}[0-9]{3}$",
    "SE"=>"^(s-|S-){0,1}[0-9]{3}\s?[0-9]{2}$",
    "BE"=>"^[1-9]{1}[0-9]{3}$",
    "IN"=>"^\d{6}$"
);

根据您的应用程序,您可能希望对大多数访问者来自的国家实现正则表达式匹配,而对其余的国家不进行验证(接受任何东西)。

除了航运之外,有一个准确的邮政编码还有其他原因。从事跨境旅游的旅行社(当然欧元区除外)需要提前向当局提供这些信息。通常这些信息是由一个可能熟悉也可能不熟悉这些东西的代理输入的。任何可以减少错误的方法都是好主意

然而,编写一个覆盖世界上所有邮政编码的正则表达式将是疯狂的。

我们使用以下方法:

加拿大

([A-Z]{1}[0-9]{1}){3}   //We raise to upper first

美国

[0-9]{5}                //-or-
[0-9]{5}-[0-9]{4}       //10 digit zip

其他

接受现状

没有。

世界各地的邮政/邮政编码并不遵循一个共同的模式。在一些国家,它们由数字组成,在其他国家,它们可以是数字和字母的组合,有些可以包含空格,有些可以包含点,字符的数量从2个到至少6个不等……

你能做的(理论上)是为世界上每个国家创建一个单独的正则表达式,我不推荐。但是您仍然会忽略验证部分:邮政编码12345可能存在,但12346不存在,也许12344也不存在。你如何用正则表达式检查它?

你不能。