如何在xcode 7中使用Swift 2.0中的NSRegularExpression
//错误在这里let regex = NSRegularExpression(pattern: "(<img.*?src=\")(.*?)(\".*?>)", options: nil, error: nil)
//错误是:***
找不到types为nsregularexpression的初始值设定项(pattern:string,ption:nil,error:nil)
在Swift 2.0中,语法有两个变化:(1)将调用包装在try ... catch
块中,而不是提供error
参数; (2) options
应该是一个Set
,而不是数字or
个别的选项。
在你的情况下,代码应该是这样的:
do { let regex = try NSRegularExpression(pattern: "(<img.*?src=\")(.*?)(\".*?>)", options: []) } catch let error as NSError { print(error.localizedDescription) }
如果你知道你的模式总是成功的话,你可以像这样缩短它:
let regex = try! NSRegularExpression(pattern: "(<img.*?src=\")(.*?)(\".*?>)", options: [])
现在如果你想为你的模式设置选项,你可以这样做:
let regex = try! NSRegularExpression(pattern: "(<img.*?src=\")(.*?)(\".*?>)", options: [.CaseInsensitive, .AnchorsMatchLines])
在Swift2中。 你需要使用try
来处理错误。
do { let regex = try NSRegularExpression(pattern: "(<img.*?src=\")(.*?)(\".*?>)", options: NSRegularExpressionOptions.CaseInsensitive) }catch { // Handling error }
Swift 2.0中的NSRegularExpression在xcode 7中
extension String { func isEmail() throws -> Bool { let regex = try NSRegularExpression(pattern: "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[AZ]{2,4}$", options: [.CaseInsensitive]) return regex.firstMatchInString(self, options: NSMatchingOptions(rawValue: 0), range: NSMakeRange(0, characters.count)) != nil } }
然后当你想调用这个方法的时候,从一个do块里面执行,并且捕获出来的错误。
do { try "person@email.com".isEmail() } catch { print(error) }