需要javascript检查夏威夷、阿拉斯加等的zipcode

需要javascript检查夏威夷、阿拉斯加等的zipcode,javascript,Javascript,有没有一种简单的方法可以根据zipcode(在javascript中)执行某些操作? 更准确地说,用户将输入zipcode,如果zipcode位于美国大陆以外(如夏威夷、阿拉斯加、波多黎各等),则会执行隐藏免费送货选项之类的操作。我知道使用state字段很容易做到这一点,但是zipcode字段呢?您需要在客户端显示一些列表,以确定是否允许使用邮政编码 或者,您需要ping服务器以检查邮政编码是否符合给定参数。美国大陆(当然不包括阿拉斯加、夏威夷和美国领土)的所有邮政编码集可以定义如下: 邮政编码

有没有一种简单的方法可以根据zipcode(在javascript中)执行某些操作?
更准确地说,用户将输入zipcode,如果zipcode位于美国大陆以外(如夏威夷、阿拉斯加、波多黎各等),则会执行隐藏免费送货选项之类的操作。我知道使用state字段很容易做到这一点,但是zipcode字段呢?

您需要在客户端显示一些列表,以确定是否允许使用邮政编码


或者,您需要ping服务器以检查邮政编码是否符合给定参数。

美国大陆(当然不包括阿拉斯加、夏威夷和美国领土)的所有邮政编码集可以定义如下:

邮政编码大于00999但小于96200

邮政编码等于或大于97000但小于99500

function isInContinentalUSA(zipcode)
{
    if((zipcode>'00999' && zipcode <'96200') || (zipcode>='97000' && zipcode <'99500')) {
      return true;
    } else {
      return false;
    }
}
从Addoa挪用:

显示夏威夷邮政编码以967和968开头。 显示阿拉斯加邮政编码以995、996、997、998和999开头

所以,你想要这样的东西:

// var zipCodeStr
var notContinental = zipCodeStr.match(/^(967|968|995|996|997|998|999)/);
编辑

megawc提出了一个很好的观点,即如果我想最高效,我应该使用
test
,而不是
match
。因此,我推荐以下代码:

var notContinental = /^(967|968|995|996|997|998|999)/.test(zipCodeStr);

另外,我注意到我以前的正则表达式缺少998和999,所以我添加了它们。

USPS提供了一个从邮政编码获取位置信息的免费API。请参见

您是否有zipcodes数据库可供查找?您是否应该将其更改为
/^(96[7-8]| 99[5-7])\d{2}$/
@megawac我不认为我在验证邮政编码,只是在检查它。我还可以处理ZIP+4:
/^(967 | 968 | 995 | 996 | 997)\d{2}(\d{5})/
,但我只是测试AK或HI。验证是一个完全不同的问题,我可以很好地证明它也应该是一个单独的问题。(在我看来,验证不应该与业务逻辑相结合。)我认为,因为您使用的是match,所以如果zipcode不是大陆性的,而不仅仅是业务的开始,那么您希望找到zipcodecode@megawac啊!!我明白你的意思。你说得对,我应该用regex.test。我会告诉你的。@Emmentaler这是官方消息,你的速度是官方消息的两倍。我将隐藏在OP不关心性能的事实背后。:-)事实上我发现00988是波多黎各的邮政编码。。因此,这将超过这个数字。
var notContinental = /^(967|968|995|996|997|998|999)/.test(zipCodeStr);