iOS:有效的邮政编码检查
问题:如何编写一个函数来检查并返回一个string(NSString)是否包含全球有效的邮政编码。
附加信息:我知道在iOS的RegEx。 不过,我并不那么stream利。 请记住,这应该接受在任何国家有效的任何真实的。
例子
美国 – “10200”
美国 – “33701-4313”
加拿大 – “K8N 5W6”
英国 – “3252-322”
等等
编辑:那些投下来或结束这个问题,请提到为什么。 谢谢。
^[ABCEGHJKLMNPRSTVXY]\d[AZ][- ]*\d[AZ]\d$
匹配具有或不具有空格的加拿大PostalCode格式(例如,“T2X 1V4”或“T2X1V4”)
^\d{5}(-\d{4})?$
匹配所有美国邮政编码格式(例如“94105-0011”或“94105”)
(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]\d[AZ][- ]*\d[AZ]\d$)
以上述格式匹配美国或加拿大的代码。
英国代码比您想象的更复杂: http : //en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom
我build议你不要这样做。 我见过很多试图强制使用邮政编码的网站,但是我从来没有见过这样做。 甚至邮政编码都是美国特有的。
换一种说法:
- (BOOL)isValidZipCode: (NSString *)zip { return YES; }
我原本是要写[zip length] > 0
,但当然,即使这是不能保证。
每个使用邮政编码/邮政编码的国家通常都有自己的格式。 你将很难find一个符合任何全球代码的正则expression式!
你最好添加一个国家select器来决定用来validation邮政编码的正则expression式(如果有的话)。
另外,作为英国例子的邮政编码是不正确的。 一个体面的英国正则expression式是:
^(^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}$)$