【问题标题】:How to validate 4 digit USA zip code? [duplicate]如何验证 4 位美国邮政编码? [复制]
【发布时间】:2015-08-26 06:53:56
【问题描述】:

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

/(^\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-9] 开头怎么样,这个不允许从零开始
  • 这里绝对需要正则表达式吗?你不能只检查数字的长度是否为 4 ,是否是大于 1001 的数字?
  • 理论上,但如果想将此正则表达式与另一个组合,则可以将两者连接起来,而不是部分代码
  • thisthisthis 的可能重复项。
  • 马萨诸塞州阿加瓦姆使用允许01001 的前导零来强制邮政编码为5 位有什么问题?在大多数情况下,如果有人输入了 4 位数字,他们可能输错了邮政编码。如果他们的邮政编码是 4 位数字,您可以在旁边提及,请使用前导零。

标签: javascript regex validation zipcode


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-10-09
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多