1

我正在使用:

+ (BOOL)isPassword:(NSString*)password {
    NSString* pattern = @"^(?=.{6,20}$).*$";
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
    return [predicate evaluateWithObject:password];
}

但它返回是的""。有小费吗?

4

1 回答 1

2

正如@Pfitz 指出的那样,您没有SELF. 例如,在过滤数组时使用它。

尝试NSRegularExpression改用。

NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression 
                              regularExpressionWithPattern:@"^(?=.{6,20}$).*$" 
                              options:NSRegularExpressionCaseInsensitive 
                                error:&error];
NSTextCheckingResult *match = [regex firstMatchInString:password 
                                                options:0
                                                  range:NSMakeRange(0, [password length])];
if (match) {
    NSRange range = [match range];
    if (range.location != NSNotFound) {
        // match
    }
}
于 2012-10-10T14:15:01.950 回答