我想知道有什么方法可以验证美国或加拿大的邮政编码吗?我尝试使用正则表达式。
就像美国一样
- (BOOL)validateZip:(NSString *)candidate {
NSString *emailRegex = @"(^{5}(-{4})?$)|(^[ABCEGHJKLMNPRSTVXY][A-Z][- ]*[A-Z]$)";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:candidate];
}
但它不起作用。请任何人对这个验证有任何想法。是否有任何其他 api 用于验证?如果可能的话请指导我?
对于美国,您有量词 ({5}
, {4}
, ?
)正确,但忘记具体说明您要量化的内容。你要:
(^[0-9]{5}(-[0-9]{4})?$)
根据维基百科,对于加拿大,格式为A0A 0A0
,所以我会这样做:
(^[a-zA-Z][0-9][a-zA-Z][- ]*[0-9][a-zA-Z][0-9]$)
现在,我将像这样编写完整的表达式,并启用不区分大小写:
@"^(\\d{5}(-\\d{4})?|[a-z]\\d[a-z][- ]*\\d[a-z]\\d)$"
坦率地说,我实际上并不熟悉 Objective C 或 iOS,遗憾的是我还没有测试过上述内容。不过,以前我见过这样的帖子提到NSRegularExpression
,它在您的代码中缺失,但也许不是必需的。查看其他人的示例,看看您可能还会犯哪些其他简单错误。祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)