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


当前回答

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

使用谷歌地理编码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和一个结果,如果两者都正确。

希望这对你有所帮助。

其他回答

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

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

我们使用以下方法:

加拿大

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

其他

接受现状

这是一个非常简单的RegEx,用于验证美国邮政编码(而不是邮政编码+ 4):

(?!([089])\1{4})\d{5}

似乎除了00000、88888和99999之外,所有五位数字都是有效的邮政编码。

我已经用http://regexpal.com/测试了这个RegEx

SP

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

如果Zip Code允许字符和数字(字母数字),则在匹配的地方使用below regex, 5或9或10个字母数字字符加上一个连字符(-):

^([0-9A-Za-z]{5}|[0-9A-Za-z]{9}|(([0-9a-zA-Z]{5}-){1}[0-9a-zA-Z]{4}))$