Проверьте, находится ли почтовый индекс в диапазоне

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

Пример канадского почтового индекса выглядит так: A0A, J3X, R7N, V1M.

Есть ли способ сделать это?

Спасибо за любую помощь!


person user3347446    schedule 03.09.2014    source источник
comment
вы хотите что-то вроде этого: ^(A0A|J3X|R7N|V1M)$ ?   -  person Federico Piazza    schedule 04.09.2014
comment
@Fede, о боже, теперь я чувствую себя очень глупо, потому что не подумал об этом, ха-ха! Есть ли что-то подобное для диапазонов? Например В1М - В1З?   -  person user3347446    schedule 04.09.2014
comment
Я опубликую ответ с ним   -  person Federico Piazza    schedule 04.09.2014


Ответы (1)


Вы можете использовать регулярное выражение следующим образом:

^(A0A|J3X|R7N|V1M)$

Если вам нужны диапазоны, вы можете сделать что-то вроде этого:

^(A0A|J3X|R7N|V1[M-Z])$
                 ^--- Will match V1M until V1Z

Другой пример для диапазона V1Z может быть:

^(A0A|J3X|R7N|V[5-9][M-Z])$
                 ^--- Will match VxM until VxZ and V5x until V9x

Если вам просто нужна цифра, вы можете использовать \d (это сокращение для [0-9]). То же самое для \w, что означает [A-Za-z0-9_].

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

[0-4]
[7-9]
[A-M]
[O-X]

В этом ответе на SO есть хорошее описание того, как работают диапазоны классов символов регулярных выражений. Перефразируя: вы не ограничены только буквами и цифрами ([A-Z] или [0-9]), но вы должны быть осторожны, пытаясь использовать более сложные диапазоны.

Диапазон позволяет использовать любой символ между в соответствии со списком символов ASCII, начальным и конечным символами для соответствие. Это означает, что любой диапазон технически допустим (вы можете просто увидеть странные результаты). Например, эти два класса одинаковы:

[0-Z]
[0-9:;<=>?@A-Z]
person Federico Piazza    schedule 03.09.2014
comment
Просто будьте осторожны, когда вы начинаете увлекаться диапазонами классов символов в регулярных выражениях. Он буквально проходит от начала до конца через список символов ASCII, поэтому [0-Z] будет таким же, как [0-9:;<=>?@A-Z]. - person Sam; 04.09.2014
comment
@ Сэм, да, ты совершенно прав. Если хотите, я могу обновить свой ответ вашим комментарием. - person Federico Piazza; 04.09.2014
comment
@ user3347446 рад помочь. - person Federico Piazza; 04.09.2014