邮政编码(美国邮政编码)validation

我以为人们会一起工作在一些小的代码项目上,但我没有看到它们,所以这里很简单:

validation有效美国邮政编码的代码。 我知道那里有邮政编码数据库,但仍然有使用,如网页,快速validation,以及邮政编码不断发布的事实,所以你可能想使用弱validation。

我在wiki /博客的一个侧面项目中写了一些有关邮政编码的信息:

https://benc.fogbugz.com/default.asp?W24

还有一个新的,怪异的邮政编码types。

https://benc.fogbugz.com/default.asp?W42

我可以做的JavaScript代码,但它会很有趣,看看我们可以在这里得到多less种语言。

Javascript正则expression式文字

美国邮政编码: /(^\d{5}$)|(^\d{5}-\d{4}$)/

 var isValidZip = /(^\d{5}$)|(^\d{5}-\d{4}$)/.test("90210"); 

一些国家使用邮政编码 ,这将失败这种模式。

 function isValidUSZip(sZip) { return /^\d{5}(-\d{4})?$/.test(sZip); } 

这是一个JavaScript函数,它根据国家代码validation邮政编码。 它允许有些自由的格式。 您也可以为其他国家添加案例。 请注意,由于并非所有国家都使用它们,所以默认情况下允许空邮政编码。

 function isValidPostalCode(postalCode, countryCode) { switch (countryCode) { case "US": postalCodeRegex = /^([0-9]{5})(?:[-\s]*([0-9]{4}))?$/; break; case "CA": postalCodeRegex = /^([AZ][0-9][AZ])\s*([0-9][AZ][0-9])$/; break; default: postalCodeRegex = /^(?:[A-Z0-9]+([- ]?[A-Z0-9]+)*)?$/; } return postalCodeRegex.test(postalCode); } 

供参考虚荣邮编的第二个链接似乎是一个愚人节的笑话。

如果你在为加拿大做的事情,记住并非所有的字母都是有效的

这些字母无效:D,F,I,O,Q或U字母W和Z不用作第一个字母。 还有一些人在第三个字符之后使用可选的空格。

以下是加拿大邮政编码的正则expression式:

new RegExp(/^[abceghjklmnprstvxy][0-9][abceghjklmnprstvwxyz]\s?[0-9][abceghjklmnprstvwxyz][0-9]$/i)

最后让它不区分大小写。

不要打扰“validation”5位数的邮政编码,他们已经过时,在这里解释

CASS软件针对USPS数据库正确validation地址和ZIP + 4代码。

这里有一个来自jQuery Validate插件的additional-methods.js文件…

 jQuery.validator.addMethod("zipUS", function(value, element) { return /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(value); }, "Please specify a valid US zip code."); 

编辑 :由于上面的代码是jQueryvalidation插件的一部分,它取决于.addMethod()方法。

删除对插件的依赖,并使其更通用….

 function checkZip(value) { return (/(^\d{5}$)|(^\d{5}-\d{4}$)/).test(value); }; 

用法示例: http : //jsfiddle.net/5PNcJ/

这是您validation问题的一个很好的JavaScript解决scheme:

 /\b\d{5}-\d{4}\b/ 

当我在邮件行业工作了17年,我已经看到了在这个领域的各种数据input,我觉得有趣的是,有多less人不知道他们的地址是由USPS定义的。 我仍然看到这样的地址:

XYZ学院
IT部门
城市,邮政编码

最差的部分是邮件99%的时间交付,另外1%,这是返回一个不完整的地址,因为它应该。

在之前的文章中有人提到USPS CASS,那个软件不是免费的。

正则expression式一个邮政编码testing仪是不错的,我使用expression式来确定是否美国,加拿大,英国或澳大利亚邮政编码。 我已经看到了日本和其他国家的expression,这只会增加挑选邮编所属国家的挑战。

到目前为止,最好的答案是使用状态和国家的下拉列表。 然后使用表进一步validation,如果需要的话。 只是给你一个想法,只有前5位数字有84052个可接受的美国城市邮编组合。 根据ISO有249个有效的国家,并且有65个美国州/地区。

有军事,只有邮政信箱,以及独特的邮政编码类。 KISS在这里适用。

build议你看看USPS地址信息API。 您可以validation一个zip文件并获得标准格式的地址。 https://www.usps.com/business/web-tools-apis/address-information.htm

一种检查有效的加拿大邮政编码的方法是 –

 function isValidCAPostal(pcVal) { return ^[A-Za-z][0-9][A-Za-z]\s{0,1}[0-9][A-Za-z][0-9]$/.test(pcVal); } 

希望这会帮助别人。

为了进一步解答,UPS和FedEx无法使用USPS作为最终处理程序。 那里的大多数运输软件将不允许他们的标准服务使用邮政信箱。 邮政信箱拉链的例子是00604 – 雷米,PR和06141 – 哈特福德,CT。

整个需要validation邮政编码的确是一个问题,你到底要走多远,预算是多less,时间是多less。

像表情testing,testing,testing和testing一样。 我有一个国家validation的expression,发现当它失败时,YORK通过了。 千禧一次有人进入纽约,纽约10279,呃。

另外请记住,USPS不喜欢像N. Market St.这样的标点符号,并且对于Lane,Place,North,Corporation之类的东西也有非常具体的可接受的缩写。

Drupal 7也有一个简单的解决scheme,这将允许你对多个国家进行validation。

https://drupal.org/project/postal_code_validation

你也需要这个模块
https://drupal.org/project/postal_code

http://simplytest.me/中testing

你是指地址validation? 就像Mike以前的回答一样,你需要满足95%的要求。

你可以做什么是当用户select他们的国家,然后启用validation。 地址validation和邮政编码validation是两件不同的事情。 validationZIP只是确保其整数。 地址validation正在validation实际地址的准确性,最好是邮寄。

为了允许用户input加小写字母的加拿大邮政编码,正则expression式需要如下所示:

/ ^([A-ZA-Z] [0-9] [A-ZA-Z])\ S *([0-9] [A-ZA-Z] [0-9])$ /