2014-09-03 75 views
1

這可能是一個愚蠢的問題,但我是iOS編程新手,我什麼都想不出來。 我的應用程序我需要檢查某個郵政編碼是否在一個範圍內。對於德國或美國的簡單數字代碼很容易,但現在我必須爲加拿大代碼做。檢查郵政編碼是否在

加拿大郵政編碼示例如下所示:A0A,J3X,R7N,V1M。

有沒有辦法做到這一點?

感謝您的幫助!

+0

你想要這樣的東西:'^(A0A | J3X | R7N | V1M)$'? – 2014-09-03 20:51:39

+0

@上帝啊,我現在覺得真的很愚蠢,我還沒有這個哈哈!有範圍類似的事情嗎?例如V1M - V1Z? – user3347446 2014-09-03 20:54:57

+0

我會用它發表一個答案 – 2014-09-03 21:11:16

回答

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(這是的快捷方式210)。 \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 2014-09-03 21:50:02

+1

@Sam yup,你是完全正確的。如果你想我可以用你的評論更新我的答案 – 2014-09-03 21:54:54

+0

非常感謝! – user3347446 2014-09-04 16:12:53