我有一个应用程序,需要对密码和确认密码进行验证。这是我的密码要求:
- 首字母应该是大写的。
- 密码应该超过6个字符。
- 至少应该有一个特殊字符。
- 密码中必须输入至少1个数字。
只有当所有这些标准都满足时,才会接受密码。
我有一个应用程序,需要对密码和确认密码进行验证。这是我的密码要求:
只有当所有这些标准都满足时,才会接受密码。
- (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.
-(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
}
}
您可以使用以下验证集。
使用DHValidation进行所有验证。它更易于使用。