如何验证用户输入的邮政编码是否正确 美国邮政编码

发布于 2024-09-09 10:07:48 字数 372 浏览 10 评论 0原文

我想验证用户输入的邮政编码是否有效。

例如用户输入了009876654,但它无效,则应给出错误消息。

我知道我可以使用 javascript regulr expression 或使用 ajax-zip-code-database

但我不想要以上任何内容。我需要一些插件之类的东西,它可以向某些在线应用程序发送请求以检查它是否有效。我想要这个,因为我不想关心将来邮政编码或新邮政编码是否发生变化-代码被添加。

PS:- 我不想使用 javascript 或使用 ajax-zip-code-database

I want to validate that zip code entered by user is valid or not.

for example user entered 009876654 and it is not valid then an error message should be given.

I know i can do it using javascript regulr expression or using ajax-zip-code-database

But i don't want any of the above. i need some plugin sort of thing which send request to some online application to check wheather it is valid or not.I want this because i don't want to take care if in future there is change in the zip-codes or new zip-codes get added.

P.S. :- I don't want to use javascript or using ajax-zip-code-database

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晨曦÷微暖 2024-09-16 10:07:48

webservicex 上有一个 Web 服务,可以通过 GET 为您提供 XML 结果甚至是 POST 调用。我从未使用过它,但它似乎正是您正在寻找的。

不存在的邮政编码返回空数据集

wget http://www.webservicex.net/uszip.asm /GetInfoByZIP?USZip=60001

<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
  <Table>
  <CITY>Alden</CITY>
  <STATE>IL</STATE>
  <ZIP>60001</ZIP>
  <AREA_CODE>815</AREA_CODE>
  <TIME_ZONE>C</TIME_ZONE>
</Table>
</NewDataSet>

There is a web service at webservicex that can give you XML results from a GET or even a POST call. I've never used it but it seems to be what you're looking for.

Non-existent zip codes return an empty data set

wget http://www.webservicex.net/uszip.asm /GetInfoByZIP?USZip=60001

<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
  <Table>
  <CITY>Alden</CITY>
  <STATE>IL</STATE>
  <ZIP>60001</ZIP>
  <AREA_CODE>815</AREA_CODE>
  <TIME_ZONE>C</TIME_ZONE>
</Table>
</NewDataSet>
澜川若宁 2024-09-16 10:07:48

假设您的应用程序在商业上与他们的使用条款兼容,我想知道您是否可以使用 Google 的地理编码器服务来查找邮政编码,然后检查结果以查看它是否存在。我假设如果你得到一个邮政编码和一个正常的经纬度对,你可以断定邮政编码是真实的。

下面的代码(诚然,使用现已弃用的 V2 API 显示了一种以美国为中心的搜索方法)。优点是最终用户和 Google 计算资源和带宽用于进行验证。

我不知道这对你的目的来说是否有点沉重,尽管我发现谷歌的地理编码器速度快得令人眼花缭乱。

gecoder = new GClientGeocoder();

geocoder.getLocations(zipcode, function(response) {
    if (response && response.Status.code === 200) {
        var places = response.Placemark;
        for (var p in places) {
            if (places[p].AddressDetails.Country.CountryNameCode === 'US') {
                // lat => places[p].Point.coordinates[1],
                // lng => places[p].Point.coordinates[0],
                // zip => places[p].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber
            }
        }
    }
});

Assuming your application is commercially compatible with their terms of use, I'm wondering if you can use Google's gecoder service to lookup a zip/postal code and then to check the results to see if it exists. I would assume if you get back a postcode and a sane lat, lng pair you could conclude the zipcode is real.

The code below (admittedly using the now deprecated V2 API shows one approach for a US-centric search). The advantage is that it's the end-user and Google compute resources and bandwidth that are used to do the validation.

I don't know if this a bit heavy for your purposes although I've found Google's gecoder to be blindingly fast.

gecoder = new GClientGeocoder();

geocoder.getLocations(zipcode, function(response) {
    if (response && response.Status.code === 200) {
        var places = response.Placemark;
        for (var p in places) {
            if (places[p].AddressDetails.Country.CountryNameCode === 'US') {
                // lat => places[p].Point.coordinates[1],
                // lng => places[p].Point.coordinates[0],
                // zip => places[p].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber
            }
        }
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文