iosregexstringswift

Swift regex: does a string match a pattern?


In Swift, what is a simple way to see if a string matches a pattern?

Pseudocode examples:

if string matches pattern ...

if string =~ pattern ...

(I have read the Swift docs and haven't seen a regex capability. I've read about adding a new =~ operator which is a good idea yet more complex than I'd like because this is for a teaching project. I have tried rangeOfString but get the error: 'String' does not have a member 'rangeOfString'. I am looking for a Swift solution, i.e. not typing NSRegularExpression. I do not need to do anything with the match result data.)


Solution

  • Swift version 3 solution:

    if string.range(of: regex, options: .regularExpression, range: nil, locale: nil) != nil ...
    

    Swift version 2 solution:

    if string.rangeOfString(pattern, options: .RegularExpressionSearch) != nil ...
    

    Example -- does this string contain two letter "o" characters?

    "hello world".rangeOfString("o.*o", options: .RegularExpressionSearch) != nil
    

    Note: If you get the error message 'String' does not have a member 'rangeOfString', then add this before: import Foundation. This is because Foundation provides the NSString methods that are automatically bridged to the Swift String class.

    import Foundation
    

    Thanks to Onno Eberhard for the Swift 3 update.