用
password.length
您可以要求一个字符串的长度。将其与您所需的限制进行比较。
用
- (BOOL)string:(NSString *)text matches:(NSString *)pattern
{
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil];
NSArray *matches = [regex matchesInString:text options:0 range:NSMakeRange(0, text.length)];
return matches.count > 0;
}
您有一个为字符串提供正则表达式的方法(也可以将其实现为NSString的类别)。
第一个参数是您的密码,第二个参数是模式。
我对正则表达式不太满意,因此可能会有更好的解决方案,但这是我的方法
NSString *password = @"iS_bhd97zAA!";
NSString *scPattern = @"[a-z]";
NSString *cPattern = @"[A-Z]";
NSString *sPattern = @"[!%&\._;,]";
NSString *nPattern = @"[0-9]";
if (8 <= password.length && password.length <= 15 &&
[self string:password matches:scPattern] &&
[self string:password matches:cPattern] &&
[self string:password matches:sPattern] &&
[self string:password matches:nPattern])
{
NSLog(@"PW is valid");
}
提示特殊字符的正则表达式很棘手,因为您需要转义一些字符。我的可能是正确的,但我不确定。
也可能仅在一个正则表达式中执行此操作,但这看起来令人恐惧。
这个
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$
除了特殊字符外,其他所有内容都可以,也许您想自己添加:D