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

时间:2020-03-06 15:00:23  来源:igfitidea点击:

我以为人们会一起从事小的代码项目,但是我看不到它们,所以这是一个简单的例子:

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

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

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

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

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

我可以执行javascript代码,但很有趣的是,我们可以在这里看到多少种语言。

解决方案

Javascript Regex字面量:

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

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

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

我们是指地址验证吗?像Mike先前的回答一样,我们需要满足其他95%的需求。

我们可以做的是在用户选择所在国家/地区时启用验证。地址验证和邮政编码验证是两件不同的事情。验证ZIP只是确保其整数。地址验证是为了确保准确性(最好是用于邮寄)而对实际地址进行验证。

这是一个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);
}

仅供参考,第二个指向虚荣邮政编码的链接似乎是愚人节的玩笑。

为了使用户也可以输入带有小写字母的加拿大邮政编码,正则表达式必须如下所示:

/ ^([a-zA-Z] [0-9] [a-zA-Z])\ s *([0-9] [a-zA-Z] [0-9])$ /

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