[Xcode10 實際操作]九、實用進階-(5)使用正則表示式判斷格式是否正確
阿新 • • 發佈:2018-12-07
[Xcode10 實際操作]九、實用進階-(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 = "[email protected]" 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 }