2015-08-26 57 views
1

我想验证USA邮政编码和我已经使用了这些正则表达式:如何验证4位数的美国邮政编码?

/(^\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 

我测试herehere,并here该美国邮政编码在1001开始显然,即使用正则表达式的上述接受“ 00000“,因为它有5位数字?

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

+0

'/^[1-9]'在开始时如何,这将不允许以零开始 – Tushar

+2

这里正则表达式绝对必要吗?不能只检查数字的长度是否为4,是否大于1001? –

+1

从理论上讲,但如果有人想将这个正则表达式与另一个正则表达式结合使用,可以只连接代码的两部分而不是部分 – Dodo

回答

1

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

看来你试图解决验证邮政编码的问题,因为它已被转换为数字,因为它被转换为数字,因此当你应该解决的问题阻止邮政编码被转换首先是一个数字。领先的零码在邮政编码是重要的,如果你的应用程序的某些部分去除它们,那就是你需要修复的部分。邮政编码不是数字。

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