天天看點

swift 3.0 正規表達式查找/替換字元1.什麼是正規表達式2.正規表達式的字元組成3.支援4.使用5.執行個體

1.什麼是正規表達式

正規表達式

,又稱正規表示法、正常表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。

正規表達式

使用單個字元串來描述、比對一系列符合某個句法規則的字元串。

在很多文本編輯器裡,

正規表達式

通常被用來檢索、替換那些符合某個模式的文本。

2.正規表達式的字元組成

普通字元【a~z】、特殊字元(稱為"元字元")

3.支援

幾乎所有的程式設計語言都支援正規表達式,例如:OC,swift,java,c#,python,js等

在很多文本編輯器裡,可以使用正規表達式進行檢索,Xcode同樣支援正規表達式!

4.使用

  • 比對

    (pattern)

    比對pattern并擷取這一比對,所擷取的比對可以從産生的Matches集合得到
  • 集合

    [xyz]

    字元集合(x||y||z)

    [a-z]

    字元範圍a-z

    [a-zA-Z]

    字元範圍a-z A-Z

    [^xyz]

    負值字元集合 (

    任何字元, 除了xyz

    )

    [^a-z]

    負值字元範圍

    [a-d][m-p]

    并集(

    a到d 或 m到p

    )
  • 常用元字元

    .

    比對除換行符以外的任意字元

    \w

    比對字母或數字或下劃線或漢字

    [a-zA-Z_0-9]

    \s

    比對任意的空白符(

    空格、TAB\t、回車\r \n

    \d

    比對數字

    [0-9]

    ^a

    比對字元串的開始a字元

    a$

    比對字元串的結束a字元

    \bw

    比對單詞的開始或結束w字元
  • 常用反義符

    \W

    比對任意不是字母,數字,下劃線,漢字的字元

    [^\w]

    \S

    比對任意不是空白符的字元

    [^\s]

    \D

    比對任意非數字的字元

    [^0-9]

    \Ba

    比對不是單詞開頭或結束的位置的a字元

    [^a]

    比對除了a以外的任意字元

    [^aeiou]

    比對除了

    aeiou

    這幾個字母以外的任意字元
  • 常用限定符

    w*oo

    重複零次或更多次

    w+oo

    重複一次或更多次

    w?oo

    重複零次或一次

    w{n}

    w重複n次

    w{n,}

    w重複n次或更多次

    w{n,m}

    w重複n到m次
  • 貪婪和懶惰

    *?

    重複任意次,但盡可能少重複

    *+

    重複1次或更多次,但盡可能少重複

    ??

    重複0次或1次,但盡可能少重複

    w{1,2}?

    重複1到2次,但盡可能少重複

    ww{1,}?

    重複1次以上,但盡可能少重複

5.執行個體

1 // 判斷QQ号碼(正常判斷)
 2 
 3  fileprivate func checkIsQQNumber(str:String) ->Bool {
 4      // 1.判斷是否以0開頭
 5      if str.hasPrefix("0"){
 6          return false
 7      }
 8 
 9      // 2.判斷是否是5~15位
10      if str.characters.count < 5 || str.characters.count > 15{
11          return false
12      }
13 
14      // 3.判斷是否全部都是數字
15      for c in str.characters{
16          if c < "0" || c > "9"{
17              return false
18          }
19      }
20      return true
21  }
22 // 正則判斷手機号碼
23 
24  fileprivate func checkPhoneNumber(str:String)->Bool {
25      let pattern = "1[3578]\\d{9}"
26 
27      let regex = try! NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options(rawValue:0))
28      let res = regex.matches(in: str, options: NSRegularExpression.MatchingOptions(rawValue:0), range: NSMakeRange(0, str.characters.count))
29      if res.count > 0 {
30          return true
31      }
32      return false
33  }      

轉載于:https://www.cnblogs.com/lurenq/p/7458605.html