Почему почтовые индексы США, которые не используются, принимают даже после проверки правильного регулярного выражения в PHP?

Я проверяю значения почтового индекса США в PHP. Из формы я получаю одно значение почтового индекса от конечного пользователя. Если это недействительный почтовый индекс США, выдается сообщение об ошибке. Он выдает некоторые значения для некоторых, это даже не они недопустимые почтовые индексы США. Предположим, что если пользователь вводит значение почтового индекса 35302, он должен выдать ошибку, поскольку 353 не используется. Для почтовых индексов, которые в настоящее время используются и которые не используются, вы можете обратиться по этой ссылке
Википедия ссылка на все доступные значения почтового индекса США

Теперь давайте перейдем к коду регулярных выражений, который я использовал для проверки:

function zip_code($str) {
return (bool) preg_match("/^([0-9]{5})(-[0-9]{4})?$/i", $str);
}

Замечания : Здесь $str содержит значение почтового индекса для проверки.

Пожалуйста, помогите мне исправить ошибку, которую я совершаю в своем коде.

Заранее спасибо.

-2

Решение

Как сказал vks, регулярное выражение не имеет представления о том, с какими данными вы пытаетесь работать.

Регулярное выражение для сопоставление с образцом, ни больше ни меньше.

Вы можете использовать регулярное выражение, чтобы извлечь первые три цифры почтового индекса и сравнить их с любыми данными, имеющимися у вас для почтовых индексов.

0

Другие решения

У USPS есть API для поиска почтовых индексов. Вы можете вызвать его напрямую, вместо того, чтобы выполнять регулярное выражение (во-первых, регулярное выражение не гарантирует, что конкретный код действителен, только то, что префикс действителен):
https://www.usps.com/business/web-tools-apis/address-information-api.htm

0

По вопросам рекламы [email protected]