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