Objective c NSPredicate正则表达式不工作

Objective c NSPredicate正则表达式不工作,objective-c,ios,regex,cocoa-touch,nspredicate,Objective C,Ios,Regex,Cocoa Touch,Nspredicate,我正在使用: + (BOOL)isPassword:(NSString*)password { NSString* pattern = @"^(?=.{6,20}$).*$"; NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; return [predicate evaluateWithObject:password]; } 但是对于“,它将返回

我正在使用:

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

但是对于
,它将返回yes。有什么建议吗?

正如@Pfitz所指出的,你没有一个
自我。例如,在筛选数组时使用

试着改用


我不能,它与iOS 4不兼容。它与iOS 4兼容,下面是正确的链接:顺便说一句:如果你要求iOS,你应该用iOS标记你的问题…感谢iOS链接@vikingosegundo。更新我的答案,我会的。顺便说一下,我指的是iOS 3.x兼容。我的错。但是我喜欢你的代码,我会在不需要的时候使用它来在3.x中工作。
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
    }
}