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

时间:2016-05-05 21:00:36

标签: ios regex swift swift2 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'的初始值设定项(模式:字符串,选项:_,错误:输入NSError?)'”

  

“使用未解析的标识符'countElements'”

我只想用这个:

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

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题。看起来您正在从早期版本的Swift迁移到Swift 2.x。

NSRegularExpression初始化程序已更改为抛出错误而不是传入ErrorPointer

do {
    self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive)
} catch {
    print(error)
}

对于nil值的特定OptionType,请使用[]。要获取字符串的长度,请使用input.characters.count,因为已从Swift中删除了countElements

let matches = self.internalExpression.matchesInString(input, options: [], range:NSMakeRange(0, input.characters.count))