如何在iPhone中执行密码验证?

时间:2011-06-21 10:01:53

标签: iphone objective-c

我有一个应用程序,我必须在密码和确认密码上执行验证。这是我的密码字段标准:

  1. 第一封信应该是资本。
  2. 密码应超过6个值。
  3. 至少应该有一个特殊的钥匙。
  4. 密码中至少应输入1个数值。
  5. 如果存在所有这些条件,则只接受密码。

3 个答案:

答案 0 :(得分:11)

这应该有效:

- (BOOL)passwordIsValid:(NSString *)password {

    // 1. Upper case.
    if (![[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[password characterAtIndex:0]])
        return NO;

    // 2. Length.
    if ([password length] < 6)
        return NO;

    // 3. Special characters.
    // Change the specialCharacters string to whatever matches your requirements.
    NSString *specialCharacters = @"!#€%&/()[]=?$§*'";
    if ([[password componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:specialCharacters]] count] < 2)
        return NO;

    // 4. Numbers.
    if ([[password componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]] count] < 2)
        return NO;

    return YES;
}

测试出来:

NSLog(@"%@", [self passwordIsValid:@"Test#one"] ? @"YES" : @"NO"); // Prints NO.
NSLog(@"%@", [self passwordIsValid:@"Test#1"] ? @"YES" : @"NO"); // Prints YES.

答案 1 :(得分:1)

这是代码:你需要做的是,只需根据你的需要操作正则表达式,

-(IBAction)passwordValidator:(id)sender{
    NSString *pwd=[NSString stringWithString:passwordField.text];
    int lngth=[pwd length]; 
    int minlength=6;

    NSString *regex = @"\\b([a-zA-Z0-9]+)\\b"; 

    NSPredicate * regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

    BOOL x= [regextest evaluateWithObject:pwd];

    if (lngth>=minlength) {
        NSLog(@"passoword length is enough");
        if (x==FALSE) {
            //DO something
        }
    }
    else {
        //DO other thing
    }
}

您可以使用Following套验证。

答案 2 :(得分:0)

使用DHValidation进行所有验证。它更容易使用。