<input type="text" id="zipCode" />
如何验证这是javascript中的有效邮政编码?
答案 0 :(得分:6)
您可以根据此正则表达式匹配输入。
/^\d{5}(-\d{4})?(?!-)$/
美国邮政编码为5位数字,后跟可选的4位数字。
答案 1 :(得分:1)
答案 2 :(得分:0)
如果没有网络服务,您可以实现的最好方法是确定邮政编码可能是否有效,假设您也了解该国家/地区。例如,美国邮政编码00001
从包含五个数字但不是实际邮政编码的角度来看是有效的。真正了解给定值是否代表真实邮政编码的唯一方法是使用类似USPS网络服务的方式查找。
答案 3 :(得分:0)
邮政编码与邮政编码不同。您应该知道,不同国家/地区的邮政编码有所不同,有些邮政编码没有。
要验证美国邮政编码,您可以进行简单验证,该字段包含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.
答案 4 :(得分:0)
前段时间我有一个客户需要查明地址是否在距离某种运输设施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])))/
并对其进行测试。如果你真的想要,理论上你可以用每个有效的邮政编码做同样的事情:)
答案 5 :(得分:0)
我不认为REGEX是最好的,因为它仍然不会告诉你它是否有效。我们的公司GreatData.com提供免费邮政编码数据库,每季度更新一次,您可以将其加载到数据库中,并且不再需要Web服务。如果你需要计算距离,它甚至有一些基本的纬度和经度(如上面提到的cwolves)。
如果您确实想要使用REGEX,请确保您考虑到某些邮政编码有一个或两个前导零可能会被某些程序剥离。