我正在创建一个正则表达式,但无法解决此问题
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}$/"
答案 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))