import Foundation
let pattern = #"^[+|-]?(90.0{6}|[0-8]?[0-9].[0-9]{6})$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
// Valid values
-90.000000
90.000000
1.000000
-1.000000
9.999999
88.888888
77.777777
66.666666
55.555555
44.444444
33.333333
22.222222
11.111111
00.000000
-9.999999
-88.888888
-77.777777
-66.666666
-55.555555
-44.444444
-33.333333
-22.222222
-11.111111
// Invalid values
-90.000001
-90.000010
-90.000100
-90.001000
-90.010000
-90.100000
-91.000000
90.000001
90.000010
90.000100
90.001000
90.010000
90.100000
91.000000
+190.000000
190.000000
-190.000000
-90.00000
-90.0000
-90.000
-90.00
-90.0
-90.
-90
-9
190.000000
90.00000
90.0000
90.000
90.00
90.0
90.
90
9
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
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