[Xcode 實際操做]9、實用進階-(5)使用正則表達式判斷格式是否正確

目錄:[Swift]Xcode實際操做html

本文將演示使用正則表達式判斷郵箱的格式是否正確。正則表達式

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】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 }
相關文章
相關標籤/搜索