如何验证4位美国邮政编码?

时间:2015-08-26 06:53:57

标签: javascript regex validation zipcode

我想验证美国邮政编码,我使用了这些正则表达式:

/(^\d{5}$)|(^\d{5}-\d{4}$)/.test(value); //First
/^\b\d{5}(-\d{4})?\b$/.test(value); //Second
/^\d{5}(-\d{4})?(?!-)$/.test(value); //Third
/^\d{5}(?:[-\s]\d{4})?$/.test(value); //Fourth

我测试了hereherehere美国邮政编码从1001开始。显然,使用上述任一正则表达式接受" 00000"因为它有5位数?

最终,我希望它接受以1001开头的4位邮政编码。我的正则表达式是否正确?

1 个答案:

答案 0 :(得分:1)

邮政编码不是数字。 0100100501是有效的邮政编码。 1001501 不是有效的邮政编码。三位或四位数字永远不是有效的邮政编码。

在您应该解决的问题是阻止邮政编码被阻止时,您似乎正在尝试解决验证邮政编码被删除后导致零码的问题,因为它被转换为数字。首先转换为数字。邮政编码中的前导零是很重要的,如果你的应用程序的某些部分剥离了它们,那么你需要修复它。邮政编码不是数字。

正如@Ultimater上面所写,如果用户输入的数字少于五位,则应该拒绝,并温和提醒他们需要输入五位或九位数字。如果由于某种原因您的应用程序的一部分正在将邮政编码转换为数字并且您无法修复该部分,那么当您进行验证时,您应首先将该数字转换为字符串并用零填充它,直到您有五位数字。请勿尝试使用三位和四位数字进行验证,因为这些数字永远不会是有效的邮政编码。