NSRegularExpression 错误,我不能使用正则表达式

NSRegularExpression error, I can't use Regular Expressions

我正在创建一个正则表达式,但无法解决这个问题

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
    }
}

这是我遇到的错误:

"Cannot invoke initializer for type 'NSRegularExpression' with an argument list of type '(pattern: String, options: _, error: inout NSError?)'"

"Use of unresolved identifier 'countElements'"

我只想用这个:

if usuarioView.text! =~ "/^[a-zA-Z0-9_]{3,30}$/"

您的代码存在一些问题。您似乎正在从早期版本的 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))