[Xcode 实际操作]九、实用进阶-(5)使用正则表达式判断格式是否正确
本文将演示使用正则表达式判断邮箱的格式是否正确。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
1 import UIKit 2 3 //创建一个结构体,用于实现正则表达式的检测 4 struct RegexHelper 5 { 6 //Swift并没有提供处理正则表达式的类, 7 //本文将使用OC正则表达式类,进行正则表达式的检测 8 let regex: NSRegularExpression? 9 10 //对结构体进行初始化 11 //并传入一个字符串参数,作为正则表达式 12 init(_ pattern: String) 13 { 14 //添加一个异常捕捉语句,用来执行正则表达式的匹配工作 15 do 16 { 17 //创建一个正则表达式,并不对大小写进行区分 18 regex = try NSRegularExpression(pattern: pattern, 19 options: NSRegularExpression.Options.caseInsensitive) 20 } 21 catch 22 { 23 //如果正则表达式创建失败,则将正则表达式对象置空 24 regex = nil 25 } 26 } 27 28 //创建一个方法,用来执行正则表达式的检测工作,并返回一个布尔结果 29 func match(_ input: String) -> Bool 30 { 31 //开始对字符串进行正则表达式的检测 32 if let matches = regex?.matches(in: input, 33 options: .reportProgress, 34 range: NSMakeRange(0, input.lengthOfBytes(using: String.Encoding.utf8))) 35 { 36 //比较在字符串中,匹配正则表达式的位置是否大于0。 37 //以判断字符串与正则表达式是否匹配。 38 return matches.count > 0 39 } 40 else 41 { 42 //如果字符串不匹配正则表达式,则返回否的布尔结果。 43 return false 44 } 45 } 46 } 47 48 class ViewController: UIViewController { 49 50 override func viewDidLoad() { 51 super.viewDidLoad() 52 // Do any additional setup after loading the view, typically from a nib. 53 54 //创建一个字符串作为正则表达式,正则表达式的其他格式,请自行搜索 55 let pattern = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$" 56 //初始化一个正则表达式结构体,以检测字符串是否匹配正则表达式。 57 let matcher = RegexHelper(pattern) 58 //创建一个字符串,用来检测此字符串的邮箱,是否符合正确的邮箱格式 59 let result = "newsagency@163.com" 60 61 //调用结构体对象的匹配方法,检测邮箱格式是否正确。 62 if matcher.match(result) 63 { 64 //如果格式正确,在控制台打印输出日志 65 print("It's an email.") 66 } 67 else 68 { 69 //如果格式不正确,则在控制台打印输出日志信息。 70 print("It's not an email.") 71 } 72 } 73 74 override func didReceiveMemoryWarning() { 75 super.didReceiveMemoryWarning() 76 // Dispose of any resources that can be recreated. 77 } 78 }