Подтвердите формат адреса улицы - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь проверить формат уличного адреса в Google Forms с помощью регулярных выражений.Я не смогу подтвердить, что это реальный адрес, но я хотел бы, по крайней мере, подтвердить, что строка:

[цифры (макс. 6 цифр)] [слово (от макс. До макс.8 слов с пробелами между ними и числами и # разрешенными)], [слова (минимум от одного до макс. Четырех слов, только буквы)], [2 заглавные буквы] [5-значное число]

Я хочупробелы и запятые, которые я оставил между скобками, должны быть именно там, где я их поместил в приведенном выше примере.Это подтвердит

123 test st, test city, TT 12345

Это явно не реальный адрес, но, по крайней мере, он требует ввода правильного формата.Данные поступают от людей, отвечающих на вопрос в форме, поэтому это всегда будет просто адрес, а не имена.Плюс, все они имеют адрес в одной области Южной Флориды, где почти все адреса будут соответствовать этому формату.У меня проблема в том, что люди не входят в город или запятые, поэтому я хочу дать им ошибку, если они этого не делают.До сих пор я нашел это

^ ([0-9a-zA-Z] +) (, \ s * [0-9a-zA-Z] +) * $

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

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

При работе с уличным адресом действительно есть что рассмотреть - больше, чем вы можете осмысленно использовать с помощью регулярного выражения.Кроме того, если человек играет на клавиатуре, всегда высока вероятность опечатки, и просто нет регулярного выражения, которое могло бы объяснить все возможные человеческие ошибки.

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

Как разработчик программного обеспечения в SmartyStreets (раскрытие), Я узнал, что регулярные выражения действительно являются неподходящим инструментом для этой работы , потому что адреса не настолько «регулярны» (стандартизированы), как вы могли бы подумать.Доступны более строгие инструменты проверки, даже плагинов, которые вы можете установить в веб-форме для проверки адреса по мере его ввода, и которые возвращают множество полезных метаданных и информации .

0 голосов
/ 25 мая 2018

Попробуйте Regex: \d{1,6}\s(?:[A-Za-z0-9#]+\s){0,7}(?:[A-Za-z0-9#]+,)\s*(?:[A-Za-z]+\s){0,3}(?:[A-Za-z]+,)\s*[A-Z]{2}\s*\d{5}

См. Демо

...