import Foundation
let pattern = #"(?>\G(?!^)|^(?:.*?[^\p{P}\h\d\n])?[\p{P}\h]*+1?(?=(?1){10}(?!(?1))))((\d)[\p{P}\h]*+)(?:[^\d\n].*)?"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
+18005551212
8005551213
18005551214
(800)555-1215
800.555.1216
(800) 555-1217
800 555 12 18
stuff before +18005551221 stuff after
stuff before 8005551222 stuff after
stuff before 18005551223 stuff after
stuff before (800)555-1224 stuff after
stuff before 800.555.1225 stuff after
stuff before (800) 555-1226 stuff after
stuff before 800 555 12 27 stuff after
5551212
"""#
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