邮政编码(美国邮政编码)验证
ZIP Code (US Postal Code) validation
我以为人们会一起做一些小代码项目,但我没有看到,所以这里有一个简单的项目:
验证有效美国邮政编码的代码。我知道有邮政编码数据库,但仍然有一些用途,比如网页、快速验证,以及邮政编码不断发布的事实,所以你可能想使用弱验证。
我在我的维基/博客上的一个附带项目中写了一些关于邮政编码的内容:
https://benc.fogbugz.com/default.asp?W24
还有一种新的、奇怪的邮政编码。
https://benc.fogbugz.com/default.asp?W42
我可以编写javascript代码,但看看这里可以使用多少种语言会很有趣。
Javascript Regex Literal:
美国邮政编码:/(^'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函数,它根据国家代码验证邮政编码。它允许一些自由的格式。你也可以为其他国家添加案例。请注意,默认情况下允许空邮政编码,因为并非所有国家/地区都使用它们。
function isValidPostalCode(postalCode, countryCode) {
switch (countryCode) {
case "US":
postalCodeRegex = /^([0-9]{5})(?:[-'s]*([0-9]{4}))?$/;
break;
case "CA":
postalCodeRegex = /^([A-Z][0-9][A-Z])'s*([0-9][A-Z][0-9])$/;
break;
default:
postalCodeRegex = /^(?:[A-Z0-9]+([- ]?[A-Z0-9]+)*)?$/;
}
return postalCodeRegex.test(postalCode);
}
仅供参考第二个链接提到虚荣的邮政编码似乎是愚人节的笑话。
如果您为加拿大做这件事,请记住并非所有字母都是有效的
这些字母无效:D、F、I、O、Q或U并且字母W和Z没有用作第一个字母。还有一些人在第三个字符后使用可选空格。
以下是加拿大邮政编码的正则表达式:
new RegExp(/^[abceghjklmnprstvxy][0-9][abceghjklmnprstvwxyz]'s?[0-9][abceghjklmnprstvwxyz][0-9]$/i)
最后一个i使其不区分大小写。
以下是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.");
EDIT:由于以上代码是jQuery Validate插件的一部分,因此它取决于.addMethod()
方法。
删除对插件的依赖,使其更通用。。。。
function checkZip(value) {
return (/(^'d{5}$)|(^'d{5}-'d{4}$)/).test(value);
};
示例用法:http://jsfiddle.net/5PNcJ/
这是一个很好的JavaScript解决方案,可以解决您的验证问题:
/'b'd{5}-'d{4}'b/
由于我在邮件行业工作了17年,我看到了该领域的各种数据输入,我发现有多少人不知道自己的地址,因为它是由美国邮政定义的。我仍然看到这样的地址:
XYZ学院
IT部门
城市,圣ZIP
最糟糕的是,99%的邮件都已送达,另外1%的邮件则因地址不完整而被退回。
在之前的一篇帖子中,有人提到了USPS CASS,该软件不是免费的。
对于regex,邮政编码测试仪很好,我使用表达式来确定是US、CA、UK还是AU邮政编码。我见过日本和其他国家的表达方式,它们只会增加选择拉链所属国家的挑战。
到目前为止,最好的答案是使用州和国家的下拉列表。然后,如果需要,使用表进行进一步验证。只是为了给你一个想法,仅前5位数字就有84052个可接受的美国城市邮政编码组合。根据ISO,有249个有效国家/地区,美国有65个州/地区。
还有军用类、仅邮政信箱类和唯一邮政编码类。KISS适用于此。
建议您查看USPS地址信息API。您可以验证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和联邦快递不能在没有使用USPS作为最终处理程序的情况下交付到邮政信箱。大多数运输软件都不允许他们的标准服务使用邮政信箱zip。邮政信箱拉链的例子有00604-RAMEY,PR和06141-HARTFORD,CT。
验证邮政编码的整个需求实际上可能是一个问题,你要走多远,预算是多少,时间线是多少。
就像任何带有表达式test、test、test和test的东西一样。我有一个州验证的表达,发现YORK在应该失败的时候通过了。千分之一的人进入纽约,纽约10279,呃。
还要记住,美国邮政不喜欢像N.Market St.这样的标点符号,也有非常具体的可接受的缩写,如Lane、Place、North、Corporation等。
Drupal 7在这里也有一个简单的解决方案,这将允许您针对多个国家/地区进行验证。
https://drupal.org/project/postal_code_validation
您也需要此模块
https://drupal.org/project/postal_code
在中测试http://simplytest.me/
您指的是地址验证吗?就像迈克之前的回答一样,你需要满足其他95%的需求。
你可以做的是当用户选择他们的国家时,然后启用验证。地址验证和邮政编码验证是两件不同的事情。验证ZIP只是确保它是整数。地址验证是验证实际地址的准确性,最好是邮寄地址。
要允许用户输入小写字母的加拿大邮政编码,正则表达式需要如下所示:
/^([a-zA-Z][0-9][a-zA-Z])''s*([0-9][a-zA-Z][0-9])$/
- 为什么这种模式不适用于敲除验证?(分隔的邮政编码)
- 用于邮政编码验证的 Javascript
- 用于验证加拿大邮政编码的限制性正则表达式
- 使用正则表达式验证加拿大邮政编码
- 马真托的美国邮政编码验证
- 美国的邮政编码验证
- 验证文本输入是否与加拿大邮政编码匹配(例如“A1S2S3”)
- 如何使用jQuery验证插件验证美国邮政编码
- 邮政编码输入是否可以在全球范围内进行验证
- 如何使用jQuery验证美国邮政编码,并在Bootstrap模板的文本字段上方显示红色错误消息
- 动态验证和格式化邮政编码
- 验证qform中的邮政编码字段
- 根据JavaScript中预定义的格式(邮政编码)验证字符串
- 为什么我的邮政编码验证方法不能正常工作
- 邮政编码验证的网站
- 邮政编码验证
- 从掩码值创建正则表达式模式以验证邮政编码
- 在jQuery中验证邮政编码
- j查询邮政编码验证不起作用
- Javascript英国邮政编码验证