import Foundation
let pattern = #"([^\d\s]+|\s\d{1,2}[\s\,])*(\d{3}[^\d\n]*\d{3}[^\d\n]*\d{4})*([^\d\s]+|\s\d{1,2}[\s\,])*"#
let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive)
let testString = ##"""
#input. Hello, there are 24 months in 2 years. also, there is a phone number here in this line, 555-555-5555
but did you know, the output now has 2, 4, and 2 as well as the number which we dont want?
555%555(5555
5555555855
555a555~5555
555 555 5555
555.555.5555
"""##
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let substitutionString = #"$2"#
let result = regex.stringByReplacingMatches(in: testString, range: stringRange, withTemplate: substitutionString)
print(result)
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