Я пытаюсь сопоставить город, штат, почтовый индекс, но все они необязательны. Правило: если я найду 5 цифр, это почтовый индекс. Если я найду 2 буквы, это состояние. Остальное - город.
Разделителями могут быть пробелы, запятые, и уродливые периоды могут быть на пути.
Я придумал это:
^(?<CITY>[A-Z ]*)[ ,]+(?<STATE>[A-Z]{2})?\.?([ ,]+(?<ZIP>[0-9]{5}))?$
SEATTLE WA 98103
WALNUT CREEK CA 98103
WALNUT CREEK, CA, 98103
WALNUT CREEK, CA
WALNUT CREEK, 98103
SEATTLE, WA. 98103
SEATTLE WA, 98103
98103
WA 98103
SEATTLE
Но это не ставит акценты на правила ZIP и State. Так что мне не хватает пары сценариев ios. Последние 4 не работают.
Как я могу применить это правило? Некоторые атомы c? Некоторые смотрят в будущее?