2012-06-19 32 views
0

我想使用正則表達式來檢查一個完整的地址字符串是否包含一個郵政編碼,有人可以幫我嗎?php - 檢查一個地址字符串是否有郵編

$address = '10100 Trinity Parkway, 5th Floor Stockton, CA 95219'; 
if (preg_match('--regex_here--',$ad)) { 
    echo 'true'; 
} 
+0

是將從地址單獨的字符串的郵政編碼? –

+0

可能的重複[什麼是最終的郵政編碼和zip正則表達式?](http://stackoverflow.com/questions/578406/what-is-the-ultimate-postal-code-and-zip-regex) – hakre

回答

5

一般郵政編碼遵循兩個字母的國家代碼,所以像下面應該是相當可靠:

/\b[A-Z]{2}\s+\d{5}(-\d{4})?\b/ 

說明:

\b   # word boundary 
[A-Z]{2} # two letter state code 
\s+  # whitespace 
\d{5}  # five digit zip 
(-\d{4})? # optional zip extension 
\b   # word boundary 

你也改變\b在到$結束,因爲郵政編碼通常在地址的末尾(總是?)。

+0

我didn不認爲郵政編碼包括州代碼。我認爲這只是5位數字或ZIP + 4。 – sachleen

+1

@sachleen - 郵政編碼不包括州代碼,但如果您只檢查了五位數字,您可能會收到街道號碼或公寓號碼。添加狀態碼檢查只是一些額外的驗證,數字實際上是一個郵政編碼。 –

+0

有道理。我第一次誤解了你的回答。郵政編碼只是遵循州代碼,不包括它。 – sachleen

相關問題