2025-10-13 00:54:17 +00:00
|
|
|
// ===----------------------------------------------------------------------===
|
|
|
|
|
//
|
|
|
|
|
// This source file is part of the DiscogsService open source project
|
|
|
|
|
//
|
2026-03-24 01:22:53 +00:00
|
|
|
// Copyright (c) 2026 Röck+Cöde VoF. and the DiscogsService project authors
|
2025-10-13 00:54:17 +00:00
|
|
|
// Licensed under Apache license v2.0
|
|
|
|
|
//
|
|
|
|
|
// See LICENSE for license information
|
|
|
|
|
// See CONTRIBUTORS for the list of DiscogsService project authors
|
|
|
|
|
//
|
|
|
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
//
|
|
|
|
|
// ===----------------------------------------------------------------------===
|
|
|
|
|
|
|
|
|
|
import Foundation
|
|
|
|
|
|
|
|
|
|
extension String {
|
|
|
|
|
|
|
|
|
|
// MARK: Functions
|
|
|
|
|
|
|
|
|
|
/// Checks whether a regular expression pattern fully matches a string or not.
|
|
|
|
|
/// - Parameter pattern: A regular expression pattern to match a string against.
|
|
|
|
|
/// - Returns: A flag that indicates whether a given pattern fully matches a string or not.
|
|
|
|
|
func fullyMatch(pattern: String) -> Bool {
|
|
|
|
|
do {
|
|
|
|
|
if #available(macOS 13.0, iOS 16.0, tvOS 16.0, watchOS 6.0, *) {
|
|
|
|
|
let securityInput = try Regex(pattern)
|
|
|
|
|
let matches = self.wholeMatch(of: securityInput)
|
|
|
|
|
|
|
|
|
|
return matches != nil
|
|
|
|
|
} else {
|
|
|
|
|
let securityInput = try NSRegularExpression(pattern: pattern)
|
|
|
|
|
let matches = securityInput.matches(
|
|
|
|
|
in: self,
|
|
|
|
|
range: .init(location: 0, length: count)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return !matches.isEmpty
|
|
|
|
|
}
|
|
|
|
|
} catch {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|