1.什麼是正規表達式
正規表達式
,又稱正規表示法、正常表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。
正規表達式
使用單個字元串來描述、比對一系列符合某個句法規則的字元串。
在很多文本編輯器裡,
正規表達式
通常被用來檢索、替換那些符合某個模式的文本。
2.正規表達式的字元組成
普通字元【a~z】、特殊字元(稱為"元字元")
3.支援
幾乎所有的程式設計語言都支援正規表達式,例如:OC,swift,java,c#,python,js等
在很多文本編輯器裡,可以使用正規表達式進行檢索,Xcode同樣支援正規表達式!
4.使用
- 比對
比對pattern并擷取這一比對,所擷取的比對可以從産生的Matches集合得到(pattern)
- 集合
字元集合(x||y||z)[xyz]
字元範圍a-z[a-z]
字元範圍a-z A-Z[a-zA-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$
比對單詞的開始或結束w字元\bw
- 常用反義符
比對任意不是字母,數字,下劃線,漢字的字元\W
[^\w]
比對任意不是空白符的字元\S
[^\s]
比對任意非數字的字元\D
[^0-9]
比對不是單詞開頭或結束的位置的a字元\Ba
比對除了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次,但盡可能少重複??
重複1到2次,但盡可能少重複w{1,2}?
重複1次以上,但盡可能少重複ww{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