在javascript中验证邮政编码
Posted
技术标签:
【中文标题】在javascript中验证邮政编码【英文标题】:validate zip code in javascript 【发布时间】:2011-04-07 19:36:28 【问题描述】:<input type="text" id="zipCode" />
如何验证这是 javascript 中的有效邮政编码?
【问题讨论】:
这仅仅是匹配 5 位数字的正则表达式吗? @Babak - 如果你想彻底,还有其他限制。 “有效邮政编码”是指“真实邮政编码”吗?还有一些规则取决于它是什么类型的地址...... ***.com/questions/578406/… 【参考方案1】:您可以将输入与此正则表达式进行匹配。
/^\d5(-\d4)?(?!-)$/
美国邮政编码为 5 位数字,后跟可选的 4 位数字。
【讨论】:
这应该是 /^\d5(-\d4)?(?!-)$/ 。否则,如果您有任何大于 5 位的数字字符串,它也会匹配。 var ZipVal = (/^\d5(-\d4)?(?!-)$/.test($(this).val())); 【参考方案2】:不久前,我有一个客户需要了解某个地址是否在某种运输设施的 30 英里范围内。他们需要过滤客户可能拥有的数千个邮政编码。所以我们可以编写一个网络服务来来回传输数千个邮政编码......相反,我想出了这个正则表达式:
/(0(2(1([0-2]\d|3[0-7])|84[01])|3217|403[2-4]|5751|61(0\d|1[0-2])|7039)|1(00(0\d|4[0-8])|52([0-3]|4[0-4])|990[1-5])|2(00([0-1]\d|20)|12(0[1-9]|[1-2]\d|3[0-7])|4517|5813|7565|9029)|3(03(0[1-9]|[1-7]\d|8[01])|250[1-9]|28(0[1-9]|[1-2]\d|3[0-7])|31(2[4-9]|[3-8]\d|90)|58(0[1-9]|1[0-6])|72(0[1-9]|1\d|2[0-2])|953[0-5])|4(170[12]|41(0[1-9]|[1-7]\d)|620[1-9]|9036|973[4-5])|5(03(0[1-9]|1\d|2[0-3])|280[1-9]|32(0[1-9]|1\d|2[0-8])|580[1-8]|740[1-2]|8282|9044)|6(06(0[1-9]|[1-3]\d|4[01])|270[1-9]|31(0[1-9]|[1-3]\d|4[01])|72(0[1-9]|1\d|2[01])|890[12])|7(011[2-9]|22(0[1-9]|1[0-7])|41(0[1-9]|10)|870[1-5])|8(02(0[1-9]|[1-3]\d)|2941|3254|423[1-3]|50(0[1-9]|[1-4]\d|5[0-5])|750[0-6]|95(0[1-9]|1[0-3]))|9(00(0[1-9]|[1-9]\d)|0209|021[0-3]|420[3-9]|68(0[1-9]|[12]\d|30)|72(0[1-9]|1\d|2[0-5])|800[4-9]|95(0[1-9]|1\d|2[0-4])))/
并针对它进行了测试。如果你真的想要,理论上你可以对每个有效的邮政编码做同样的事情:)
【讨论】:
这令人印象深刻。这太矫枉过正了,我印象深刻。【参考方案3】:ZipCodes differ all over the world.
验证输入的最常用方法是通过正则表达式。阅读他们here。
Javascript 中的正则表达式,特别是 here。
【讨论】:
正如亚当在他的回答中所说,ZIP codes 与postal codes 不同。它们是一个子集,没有区别【参考方案4】:在没有网络服务的情况下,最好的办法是确定邮政编码是否可能在您也知道国家/地区的情况下有效。例如,美国邮政编码00001
从包含五个数字的角度来看是有效的,但不是实际的邮政编码。真正了解给定值是否代表真实邮政编码的唯一方法是使用 USPS 网络服务之类的工具进行查找。
USPS Address Information API
【讨论】:
【参考方案5】:邮政编码与邮政编码不同。您应该知道,不同国家/地区的邮政编码不同,有些没有。
要验证美国邮政编码,您可以执行一个简单的验证,确认该字段包含 5 位邮政编码或 9 位邮政编码,前 5 位数字后有一个可选的短划线。当然,这并不能保证该邮政编码确实存在。
要验证输入的邮政编码是否确实存在,您可以在页面上保留有效邮政编码或有效邮政编码范围的列表,以检查哪个会占用空间并且您需要保持更新,或者您可以使用网络服务。
Geonames has a webservice which can check zip codes.
The jQuery Validation plug-in could be used to do a simple number validation.
【讨论】:
【参考方案6】:我认为 REGEX 不是最好的,因为它仍然不会告诉您它是否有效。我们公司 GreatData.com 提供了一个免费的邮政编码数据库,该数据库每季度更新一次,您可以将其加载到您的数据库中,而无需使用网络服务。如果需要计算距离,它甚至还有一些基本的经纬度(如上面提到的 cwolves)。
如果您确实想使用 REGEX,请确保您考虑到某些邮政编码有一个或两个前导零,这些零可能会被某些程序删除。
【讨论】:
以上是关于在javascript中验证邮政编码的主要内容,如果未能解决你的问题,请参考以下文章