邮政编码(美国邮政编码)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
你是指地址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])$ /