Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何验证4位美国邮政编码?_Javascript_Regex_Validation_Zipcode - Fatal编程技术网

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

Javascript 如何验证4位美国邮政编码?,javascript,regex,validation,zipcode,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 我测试过,美国邮政编码从1001开始。显然,使用上面的任何一个正则表达式都接受

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

/(^\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
我测试过,美国邮政编码从1001开始。显然,使用上面的任何一个正则表达式都接受“00000”,因为它有5个数字


最终,我希望它接受从1001开始的4位邮政编码。我的正则表达式正确吗?

邮政编码不是数字<代码>01001和
00501是有效的邮政编码<代码>1001和
501是无效的邮政编码。三位数或四位数的数字永远不是有效的邮政编码

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


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

那么
/^[1-9]
在开始时,这将不允许从零开始,这里绝对需要正则表达式吗?你能不能检查一下这个数字的长度是否是4,它是否是一个大于1001的数字?理论上,但是如果你想把这个正则表达式和另一个正则表达式结合起来,你可以把这两个正则表达式连接起来,而不是代码的两个部分,还有。对于马萨诸塞州的阿加瓦姆市,使用前导零将邮政编码强制为5位有什么错?在大多数情况下,如果有人输入4位数字,他们很可能输入错了邮政编码。如果他们的邮政编码是4位数字,你可以在旁边提到,使用前导零。