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


当前回答

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

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

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

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

SP

其他回答

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

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

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

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

SP

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

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

没有。

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

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

你不能。

正如其他人指出的那样,用一个正则表达式来统治所有正则表达式是不可能的。但是,您可以使用来自万国邮政联盟(一个鲜为人知的联合国机构)的地址格式信息为尽可能多的国家创建正则表达式。

例如,以下是一些国家的地址格式规则,包括邮政编码(PDF格式):

加拿大 日本 瑞士 俄罗斯联邦 美利坚合众国

我们使用以下方法:

加拿大

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

其他

接受现状