2014-09-03 76 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