1

私は使用しています:

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

しかし、 に対して yes を返しています""。任意のヒント?

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 に答える