Ios 验证州和邮政编码的有效方法

Ios 验证州和邮政编码的有效方法,ios,objective-c,cocoa-touch,validation,Ios,Objective C,Cocoa Touch,Validation,我正在寻找一种验证州和邮政编码的简单方法(仅限美国)。显然有很多方法可以做到这一点。我有邮政编码: - (BOOL)validateZipCode { bool returnValue = false; NSString *zipcodeExpression = @"^[0-9]{5}(-/d{4})?$"; //U.S Zip ONLY!!! NSRegularExpression *regex = [NSRegularExpression regularExpress

我正在寻找一种验证州和邮政编码的简单方法(仅限美国)。显然有很多方法可以做到这一点。我有邮政编码:

- (BOOL)validateZipCode
{
    bool returnValue = false;
    NSString *zipcodeExpression = @"^[0-9]{5}(-/d{4})?$"; //U.S Zip ONLY!!!
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:zipcodeExpression options:0 error:NULL];

    NSTextCheckingResult *match = [regex firstMatchInString:ZipCodeTextField.text options:0 range:NSMakeRange(0, [ZipCodeTextField.text length])];
    if (match)
    {
       returnValue = true;
    }
   return returnValue;
 }
有一个包含所有状态和缩写的列表,然后比较用户输入以检查匹配是否常见?这似乎太多了


我想我在寻找替代品。我还听说过一些框架,当用户输入邮政编码时,城市和州就会自动生成。有人知道这样的替代方案吗?

我觉得在你的应用程序中预装州名和缩写的简单plist文件就足够简单了。正则表达式将验证字符串是否表示有效的邮政编码

如果您需要实际验证邮政编码和州匹配,则需要大量数据

快速的谷歌搜索应该会发现一些你可以用来从邮政编码中获取州信息的网络服务。邮政编码有时会改变(至少增加新的)。您可以在应用程序中提供州/邮政编码数据库文件。但是你需要一种方法来偶尔更新数据库,而不需要提交应用程序的更新


更新:快速查看会发现某些邮政编码跨越多个州。

据我所知,邮政编码的前3位数字表示该州。因此,一个包含1000个条目的表应该能够验证邮政编码是否与州匹配。验证低2位数字是否有效需要更复杂的东西,可能最好由网络服务或数据库来验证,尽管您可能会使用位向量或类似的方法。请参阅@rmaddy answer与前3位数字的对比,它们不能保证只覆盖单个状态。邮政编码验证是一个非常重要的过程,如果做得不对,可能会让客户非常恼火。精确的数据库既昂贵又庞大。如果您在设备上执行此操作,我建议您验证格式,但如果您不想在边界条件下打扰某些客户,请远离数字验证。