很遗憾,Swift没有正则表达式字面量。但是你提到的外部链接介绍了两种使用正则表达式的方法:
rangeOfString:options:
并将选项设置为RegularExpressionSearch
。第二种方法更加简洁易懂,实现起来也更加简单。
在Swift中,该方法定义如下:
func rangeOfString(_ aString: String!,options mask: NSStringCompareOptions) -> NSRange
您可以将其与正则表达式匹配一起使用:
let myStringToBeMatched = "ThisIsMyString"
let myRegex = "ing$"
if let match = myStringToBeMatched.rangeOfString(myRegex, options: .RegularExpressionSearch){
println("\(myStringToBeMatched) is matching!")
}
这里是苹果公司有关 rangeOfString() 的文档。
match = myStringToBeMatched.range(of: myRegex, options: .regularExpression)
进行字符串匹配。 - Raphael我也遇到了同样的问题。所以,我写了一个小封装 - https://gist.github.com/ningsuhen/dc6e589be7f5a41e7794。将 Regex.swift 文件添加到您的项目中,并添加“Foundation”框架(如果尚未添加)。完成后,您可以按照以下方式使用替换和匹配方法。
"+91-999-929-5395".replace("[-\\s\\(\\)]", template: "") //replace with empty or remove
"+91-999-929-5395".match("[-\\s\\(\\)]") //simple match - returns only true or false, not the matched patterns.
func isCAZipValid(_ zip: String) -> Bool {
return NSPredicate(format: "SELF MATCHES %@", "^([A-Z]\\d[A-Z])(\\s|-)?(\\d[A-Z]\\d)$")
.evaluate(with: zip.uppercased())
}