您好我正在使用以下内容验证密码,但我也希望包含特殊字符。目前它只包含数字和字母。请帮忙。
- (BOOL)validatePassword:(NSString *) password{
NSString *ACCEPTABLE_CHARECTERS = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARECTERS] invertedSet];
NSString *filtered = [[password componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return [password isEqualToString:filtered];
}
答案 0 :(得分:14)
你可以试试这个
import com.fasterxml.jackson.core.type.TypeReference;
Map<String, String> map =
mapper.readValue(jsonAsString, new TypeReference<Map<String, String>>(){});
<强>说明强>
- (BOOL)validatePassword:(NSString *) password{
if(password.length == 0){
return NO;
}
NSString *regex = @"^(?=(.*\d){2})(?=.*[a-zA-Z])(?=.*[!@#$%])[0-9a-zA-Z!@#$%]{8,}";
NSPredicate *passwordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [passwordPredicate evaluateWithObject:password];
}
- 使用预测(?=(.*\d){2})
并说密码必须至少包含2位
(?=)
- 使用预测并说密码必须包含alpha
(?=.*[a-zA-Z])
- 使用预测并说密码必须包含一个或多个已定义的特殊字符
(?=.*[!@#$%])
- 指示允许的字符
[0-9a-zA-Z!@#$%]
- 说密码必须至少8个字符
可能需要稍微调整,例如确切地指定你需要哪些特殊字符,但它应该可以解决问题。
答案 1 :(得分:0)
-(BOOL)validatePassword:(NSString *) password{
NSString *COMMON_CHARECTERS = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
NSString *SPECIAL_CHARECTERS = @"@#$%^&*";
NSCharacterSet *cs_common = [NSCharacterSet characterSetWithCharactersInString:COMMON_CHARECTERS];
NSCharacterSet *cs_special = [NSCharacterSet characterSetWithCharactersInString:SPECIAL_CHARECTERS];
NSString *filtere_common = [[password componentsSeparatedByCharactersInSet:cs_common] componentsJoinedByString:@""];
NSString *filtere_special = [[password componentsSeparatedByCharactersInSet:cs_special] componentsJoinedByString:@""];
BOOL valid = (password.length == (filtere_common.length + filtere_special.length));
return valid;
}
答案 2 :(得分:-1)