import Foundation
let pattern = #"^(?:[A-Za-z0-9_][A-Za-z0-9_\-]*(?:\.[A-Za-z0-9_\-]+)*\/)+$"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
dir
dir/
dir//
dir./
-dir/
.dir/
_dir/
__dir/
_-dir/
_.dir/
dir.name/
ABCDEFGHIJKLMNOPQRSTUVWXYZ.abcdefghijklmnopqrstuvwxyz.0123456789_-/
dir/dir/filename
dir/dir/filename.ext
// values currently used in wjec.services.properties:
dev.est.edientries.archive
dev-est-reports
dev-est-csv-import
dev-est-csv-import-archive
// alternatives:
dev.est.edientries.archive/
dev-est-reports/
dev-est-csv-import/
dev-est-csv-import-archive/
"""#
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