邮政编码(美国邮政编码)验证

时间:2008-10-02 01:57:52

标签: javascript validation

我认为人们会一起处理小代码项目,但我没有看到它们,所以这里很简单:

验证有效美国邮政编码的代码。我知道那里有邮政编码数据库,但仍有一些用途,如网页,快速验证,以及邮政编码不断发布的事实,因此您可能希望使用弱验证。

我在wiki / blog上的一个侧面项目中写了一些关于邮政编码的文章:

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

还有一种新的奇怪类型的邮政编码。

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

我可以使用javascript代码,但看看我们可以在这里找到多少种语言会很有趣。

13 个答案:

答案 0 :(得分:54)

Javascript Regex Literal

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

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

某些国家/地区使用Postal Codes,这会使这种模式失败。

答案 1 :(得分:26)

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

答案 2 :(得分:6)

这是一个JavaScript函数,可根据国家/地区代码验证ZIP /邮政编码。它允许有点自由格式化。您也可以为其他国家/地区添加案例。请注意,默认情况允许空邮政编码,因为并非所有国家/地区都使用它们。

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);
}

仅供参考这个涉及虚荣邮政编码的第二个链接似乎是愚人节的笑话。

答案 3 :(得分:5)

如果您为加拿大做的事,请记住并非所有字母都有效

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

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

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

最后一个 i 使其不区分大小写。

答案 4 :(得分:3)

这是来自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.");

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

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

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

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

答案 5 :(得分:1)

这是一个很好的JavaScript解决方案,可以解决您的验证问题:

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

答案 6 :(得分:1)

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

XYZ学院 IT部门 City,St ZIP

最糟糕的部分是邮件99%的时间都是邮件发送,另外1%是邮件,因为它应该是一个不完整的地址。

在之前有人提到USPS CASS的帖子中,该软件不是免费的。

对于正则表达式,邮政编码测试员很好,我使用表达式来确定美国,加拿大,英国或澳大利亚邮政编码。我已经看到了日本和其他人的表达方式,只会在选择拉链所属的正确国家时遇到挑战。

到目前为止,最好的答案是使用State和Country的下拉列表。然后使用表格进一步验证是否需要。只是为了给你一个想法,只有前5位数字有84052个可接受的US City St Zip组合。根据ISO有249个有效国家,有65个美国州/地区。

还有Military,PO Box和Unique邮政编码类。 KISS适用于此。

答案 7 :(得分:1)

建议您查看USPS地址信息API。您可以验证zip并获取标准格式的地址。 https://www.usps.com/business/web-tools-apis/address-information.htm

答案 8 :(得分:0)

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

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

希望这会对某人有所帮助。

答案 9 :(得分:0)

为了进一步解决这个问题,UPS和FedEx无法在没有使用USPS作为最终处理程序的情况下交付给PO BOX。大多数出货软件都不允许使用邮政信箱邮票进行标准服务。 PO Box拉链的示例是00604 - RAMEY,PR和06141 - HARTFORD,CT。

验证邮政编码的全部需求确实可以解决你走多远,预算是多少,时间线是什么。

像表达式测试,测试,测试和测试一样。我有一个状态验证的表达式,发现YORK在失败时通过了。有成千上万的人有一次进入纽约,纽约10279,呃。

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

答案 10 :(得分:0)

Drupal 7在这里也有一个简单的解决方案,这将允许您对多个国家进行验证。

https://drupal.org/project/postal_code_validation

您还需要此模块 https://drupal.org/project/postal_code

http://simplytest.me/

中测试

答案 11 :(得分:-1)

您指的是地址验证吗?就像迈克之前的回答一样,你需要迎合其他95%。

您可以做的是当用户选择他们的国家/地区,然后启用验证。地址验证和邮政编码验证是两回事。验证ZIP只是确保其整数。地址验证正在验证实际地址的准确性,最好是邮寄。

答案 12 :(得分:-1)

为了允许用户输入带有小写字母的加拿大邮政编码,正则表达式需要如下所示:

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