Ошибка NSRegularExpression, я не могу использовать регулярные выражения
Я создавал регулярное выражение, но не могу решить эту проблему
class Regex {
let internalExpression: NSRegularExpression
let pattern: String
init(_ pattern: String) {
self.pattern = pattern
var error: NSError?
self.internalExpression = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &error)
}
func test(input: String) -> Bool {
let matches = self.internalExpression.matchesInString(input, options: nil, range:NSMakeRange(0, countElements(input)))
return matches.count > 0
}
}
Вот ошибки, которые я получил:
"Невозможно вызвать инициализатор для типа 'NSRegularExpression' со списком аргументов типа '(pattern: String, options: _, error: inout NSError?)'"
а также
"Использование неразрешенного идентификатора countElements"
Я только хочу использовать это:
if usuarioView.text! =~ "/^[a-zA-Z0-9_]{3,30}$/"
1 ответ
Решение
Есть несколько проблем с вашим кодом. Похоже, вы переходите с более ранней версии Swift на Swift 2.x.
NSRegularExpression
инициализатор был изменен, чтобы выдавать ошибку вместо передачи в ErrorPointer
:
do {
self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
} catch {
print(error)
}
Для конкретных nil
для OptionType
ценность, использование []
, Чтобы получить длину строки, используйте input.characters.count
, поскольку countElements
был удален из Swift:
let matches = self.internalExpression.matchesInString(input, options: [], range:NSMakeRange(0, input.characters.count))