Я думаю, вам не хватает только скобок (
и )
в начале и в конце.
let fieldText = "0401234567"
let pattern = "(^04[0-9]{8})|(^[0-9]{2}[0-9]{4}[0-9]{4}$)"
let matches = fieldText.range(of: pattern, options: .regularExpression) != nil
print(matches) // true
или, с NSPredicate
:
let fieldText = "0401234567"
let pattern = "(^04[0-9]{8})|(^[0-9]{2}[0-9]{4}[0-9]{4}$)"
let predicate = NSPredicate(format: "SELF MATCHES %@", pattern)
let matches = predicate.evaluate(with: fieldText)
print(matches) // true
Регулярное выражение все еще выглядит довольно странно.