2012-06-19 2 views
0

Я пытаюсь использовать регулярное выражение, чтобы проверить, содержит ли полная адресная строка zipcode, может ли кто-нибудь помочь мне?php - проверьте, имеет ли адресная строка zipcode

$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 - Почтовый индекс не содержит код состояния, но если вы только что отметили пять цифр, вы можете забрать номера улиц или номера квартир. Добавление проверки кода состояния - это всего лишь дополнительная проверка того, что это действительно код ZIP. –

+0

Делает смысл. Я неправильно понял ваш ответ в первый раз. Почтовый индекс просто следует за кодом состояния, а не включает его. – sachleen

Смежные вопросы