2014-09-03 5 views
1

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

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

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

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

+0

Вы хотите что-то вроде этого: '^ (A0A | J3X | R7N | V1M) $'? –

+0

@Fede, боже, я чувствую себя действительно глупым теперь, когда у меня не было этого хаха! Есть ли сходство с диапазонами? Например, V1M - V1Z? – user3347446

+0

Я отправлю ответ с ним –

ответ

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] 

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

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

[0-Z] 
[0-9:;<=>[email protected]] 
+0

Просто будьте осторожны, когда вы начинаете фантазировать о диапазонах классов символов в регулярном выражении. Это буквально идет от начала до конца через [список символов ASCII] (http://www.asciitable.com/), поэтому ['[0-Z]' будет таким же, как '[0-9 :; <=>? @ A-Z] '] (http://stackoverflow.com/a/19409948/703229). – Sam

+1

@ Сэм, ты совершенно прав. Если вы хотите, я могу обновить свой ответ с вашего комментария –

+0

Большое вам спасибо! – user3347446

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