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


当前回答

有人问关于格式化邮件地址的列表,我想这就是他要找的…

弗兰克的邮政地址强制指南:http://www.columbia.edu/~fdc/postal/ 但这对解决街头问题没什么帮助。

我的工作使用了一些工具来帮助实现这一点: - Lexis-Nexis服务,包括NCOA查询(您将“免费”获得地址标准化) -“梅丽莎数据”http://www.melissadata.com

其他回答

如果有人仍然对如何验证邮政编码感兴趣,我找到了一个解决方案:

使用谷歌地理编码API,我们可以检查具有国家代码和邮政编码本身的邮政编码的有效性。

例如,我住在乌克兰,所以我可以这样检查: https://maps.googleapis.com/maps/api/geocode/json?components=postal_code:80380|country:UA

或者使用JS API: https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFiltering

其中80380是乌克兰有效的ZIP,实际上每个(#####)是有效的。

如果没有发现,谷歌返回ZERO_RESULTS状态。 或者OK和一个结果,如果两者都正确。

希望这对你有所帮助。

我们使用以下方法:

加拿大

([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

其他

接受现状

正如其他地方指出的那样,世界各地的差异很大。即使某些东西符合模式也不意味着它存在。

当然,还有很多地方不使用邮政编码(例如much或爱尔兰)。

使用这些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}$"
);

你为什么要这么做,你为什么这么在乎?正如Tom Ritter所指出的,你是否有一个ZIP/邮政编码并不重要,更不用说它是否有效了,除非你真的要把东西发送到那个地址。即使你希望有一天你会给他们寄东西,这并不意味着你今天就需要邮政编码。