import Foundation
let pattern = #"^((([1][9][0|2|4|6|8][0|4|8]|[1][9][1|3|5|7|9][2|6]|[2][0][0][0|4|8]|[2][0][1][2])[-|\\|\/|\.]([1][1-2]|[0][1|3|5|7|8])[-|\\|\/|\.]([0][1-9]|[1][0-9]|[2][0-9]|[3][0-1])|([1][9][0|2|4|6|8][0|4|8]|[1][9][1|3|5|7|9][2|6]|[2][0][0][0|4|8]|[2][0][1][2])[-|\\|\/|\.][0][2][-|\\|\/|\.]([0][1-9]|[1][0-9]|[2][0-9])|([1][9][0|2|4|6|8][0|4|8]|[1][9][1|3|5|7|9][2|6]|[2][0][0][0|4|8]|[2][0][1][2])[-|\\|\/|\.]([1][1]|[0][4|6|9])[-|\\|\/|\.]([0][1-9]|[1][0-9]|[2][0-9]|[2][0]))|(([1][9][0|2|4|6|8][1|2|3|5|6|7|9]|[1][9][1|3|5|7|9][0|1|3|4|5|7|8|9]|[2][0][0][1|2|3|5|6|7|9]|[2][0][1][0|1|3])[-|\\|\/|\.]([1][1-2]|[0][1|3|5|7|8])[-|\\|\/|\.]([0][1-9]|[1][0-9]|[2][0-9]|[3][0-1])|([1][9][0|2|4|6|8][1|2|3|5|6|7|9]|[1][9][1|3|5|7|9][0|1|3|4|5|7|8|9]|[2][0][0][1|2|3|5|6|7|9]|[2][0][1][0|1|3])[-|\\|\/|\.][0][2][-|\\|\/|\.]([0][1-9]|[1][0-9]|[2][0-8])|([1][9][0|2|4|6|8][1|2|3|5|6|7|9]|[1][9][1|3|5|7|9][0|1|3|4|5|7|8|9]|[2][0][0][1|2|3|5|6|7|9]|[2][0][1][0|1|3])[-|\\|\/|\.]([1][1]|[0][4|6|9])[-|\\|\/|\.]([0][1-9]|[1][0-9]|[2][0-9]|[2][0])))$"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"2012-02-29"#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
if let firstMatch = regex.firstMatch(in: testString, range: stringRange) {
let result: [String] = (1 ..< firstMatch.numberOfRanges).map { (testString as NSString).substring(with: firstMatch.range(at: $0)) }
print(result)
} else {
print("No matches were found.")
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression