2015-08-26 56 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在上面所寫的,如果用戶輸入少於五位數字,應該被拒絕,並溫和地提醒他們需要輸入五位或九位數字。如果由於某種原因,部分應用程序將郵政編碼轉換爲數字,而您無法修復該部分,那麼當您進行驗證時,應首先將該數字轉換爲字符串,並用零填充,直到您有五位數字。不要試圖使用三位和四位數字進行驗證,因爲這些都不是有效的郵政編碼。