我有一个应用程序,我必须在密码和确认密码上执行验证。这是我的密码字段标准:
如果存在所有这些条件,则只接受密码。
答案 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进行所有验证。它更容易使用。