How to check if string matches a regular expression in objective-c?

前端 未结 4 818
庸人自扰
庸人自扰 2021-01-30 21:56

since regular exressions are not supported in Cocoa I find RegexKitLite very usefull. But all examples extract matching strings.

I just want to test if a string matches

相关标签:
4条回答
  • 2021-01-30 22:25

    Another way to do this, which is a bit simpler than using NSPredicate, is an almost undocumented option to NSString's -rangeOfString:options: method:

    NSRange range = [string rangeOfString:@"^\\w+$" options:NSRegularExpressionSearch];
    BOOL matches = range.location != NSNotFound;
    

    I say "almost undocumented", because the method itself doesn't list the option as available, but if you happen upon the documentation for the Search and Comparison operators and find NSRegularExpressionSearch you'll see that it's a valid option for the -rangeOfString... methods since OS X 10.7 and iOS 3.2.

    0 讨论(0)
  • 2021-01-30 22:27

    I've used NSPredicate for that purpose:

    NSString *someRegexp = ...; 
    NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", someRegexp]; 
    
    if ([myTest evaluateWithObject: testString]){
    //Matches
    }
    
    0 讨论(0)
  • 2021-01-30 22:34

    Use the -isMatchedByRegex: method.

    if([someString isMatchedByRegex:@"^[0-9a-fA-F]+:"] == YES) { NSLog(@"Matched!\n"); }
    
    0 讨论(0)
  • 2021-01-30 22:38

    NSRegularExpression is another option:

    http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

    0 讨论(0)
提交回复
热议问题