Swift3 正则表达式的应用
2017-03-01 本文已影响1992人
说不出情绪
在Swift的编程中我们用到正则表达式主要在两方面:
1.判断一些字符是否符合所需要求;
2.用于检索文本中所需字段。
匹配对应类型的正则表达式网上要多少有多少,我就不一一列举了,想更深层次了解的点这里,本文只说明Swift3中如何使用。
一、判断一些字符是否符合所需要求
例如匹配有效邮箱:
let email = "jay734138477@qq.com"
let regex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
let isValid = predicate.evaluate(with: email)
print(isValid ? "正确的邮箱地址" : "错误的邮箱地址")
输出结果:
正确的邮箱地址
二、用于检索文本中所需字段
创建被检索文本文字:
let searchText = " Do any additional 12 setup <image>http://regxlib.com/Default.aspx<image/> after 30 loading the view,102 typically 0 from a nib."
我们要检索上面文字中的<image>标签对,利用NSRegularExpression
类去实现。
do {
let regex = try NSRegularExpression(pattern: "<image>(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?<image/>", options: .caseInsensitive)
let result = regex.matches(in: searchText, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, searchText.characters.count))
if result.count > 0 {
for checkingRes in result {
print("Location:\(checkingRes.range.location), length:\(checkingRes.range.length)")
}
}else{
print("未查找到")
}
} catch {
print(error)
}
输出结果:
Location:30, length:46
获取要目标在为本中的位置后再进行其他处理就方便多了。