iOS:有效的邮政编码检查

时间:2012-06-27 16:00:06

标签: iphone ios regex ipad zipcode

问题:如何编写一个函数来检查并返回一个字符串(NSString)是否在全球范围内包含有效的邮政编码。

其他信息:我知道iOS中的RegEx。但是我不是那么流利。请记住,这应该接受在任何国家/地区都有效的任何内容。

示例

美国 - “10200”

美国 - “33701-4313”

加拿大 - “K8N 5W6”

英国 - “3252-322”

编辑:投票或关闭此问题的人请提及原因。谢谢。

3 个答案:

答案 0 :(得分:7)

^[ABCEGHJKLMNPRSTVXY]\d[A-Z][- ]*\d[A-Z]\d$

使用或不使用空格匹配Canadian PostalCode格式(例如,“T2X 1V4”或“T2X1V4”)


^\d{5}(-\d{4})?$

匹配所有美国格式的邮政编码格式(例如“94105-0011”或“94105”)


(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]\d[A-Z][- ]*\d[A-Z]\d$)

以上述格式匹配美国或加拿大代码。


英国代码比您想象的更复杂:http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom

答案 1 :(得分:3)

我建议你不要这样做。我见过很多试图强制执行zipcodes的网站,但我从来没有见过一个正确的。甚至名称 zipcode 也是特定于美国的。

换句话说:

- (BOOL)isValidZipCode: (NSString *)zip {
    return YES;
}

我原本打算写[zip length] > 0,但当然即使这样也不能保证。

答案 2 :(得分:2)

使用邮政编码/邮政编码的每个国家/地区通常都有自己的格式。您将很难找到与任何全球代码匹配的正则表达式!

您最好添加一个国家/地区选择器,用于确定用于验证邮政编码的正则表达式(如果有)。

另外,您作为英国示例提供的邮政编码不正确。一个体面的英国正则表达是:

^(^gir\\s0aa$)|(^[a-pr-uwyz]((\\d{1,2})|([a-hk-y]\\d{1,2})|(\\d[a-hjks-uw])|([a-hk-y]\\d[abehmnprv-y]))\\s\\d[abd-hjlnp-uw-z]{2}$)$