




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、正則表達式在 IOS 中的應用及 IOS中三種正則表達式的使用與比較 正則表達式在 ios 中應用 一、什么是正則表達式 正則表達式,又稱正規(guī)表示法,是對字符串操作的一種邏輯公式。正則表達式可以檢測給定的字 符串是否符合我們定義的邏輯, 也可以從字符串中獲取我們想要的特定部分。 它可以迅速地用極簡單 的方式達到字符串的復雜控制。 二、正則表達式的語法 看一個過濾純數字的例子 - (BOOL)validateNumber:(NSString *) textString NSString* number=0-9+$; NSPredicate *numberPre = NSPredicate pre
2、dicateWithFormat:SELF MATCHES %,number; return numberPre evaluateWithObject:textString; 其中下述語句就是一個正則表達式 0-9+$ 它代表了字符串中只能包含 =1個0-9 的數字,語法是不是有一些怪異? 下面我們先撇開 iOS 中的正則表達式的語法,用通俗的正則表達式語法來為介紹一下。(iOS 語 法與通俗的正則表達式語法相同,不同在于對轉義字符的處理上 ( 語言類的都相同 ) ) 語法: 首先,特殊符號 和 $ 。他們的作用是分別指出一個字符串的開始和結束。eg: “one”:表示所有以” one”開始的
3、字符串(” one cat ”,” one123,); 類似于 :- (BOOL)hasPrefix:(NSString *)aString; “a dog$ ”:表示所以以” a dog ”結尾的字符串(” it is a dog ”,); 類似于 :- (BOOL)hasSuffix:(NSString *)aString; “ apple$ ”:表示開始和結尾都是” apple ”的字符串,這個是唯一的 ; “ banana”:表示任何包含” banana”的字符串。 類似于 iOS8 的新方法 - (BOOL)containsString:(NSString *)aString, 搜索
4、子串用的。 * ,+ 和? 這三個符號, 表示一個或 N 個字符重復出現的次數。 它們分別表示 “沒有或更多” (0,+ 取整),“一次或更多”( 1,+ 取整),“沒有或一次”( 0,1 取整)。下面是幾個 例子: “ab* ”:表示一個字符串有一個 a 后面跟著零個或若干個 b(”a”, “ab”, “abbb”, ); “ ab+”:表示一個字符串有一個 a后面跟著至少一個 b 或者更多( ”ab”, “ abbb”, ); “ab?”:表示一個字符串有一個 a 后面跟著零個或者一個 b( ”a”, “ab”); “a?b+$”:表示在字符串的末尾有零個或一個 a跟著一個或幾個 b( ”
5、b”, “ab”, ”bb” abb” , )。 可以用大括號括起來( ),表示一個重復的具體范圍。例如 “ ab4 ”: 表示一個字符串有一個 a 跟著 4 個 b(” abbbb ”); “ab1, ” :表示一 個字符串有一個 a 跟著至少 1 個 b(” ab”, ”abb”, ”abbb” , ); “ab3,4 ” :表示一 個字符串有一個 a跟著 3 到 4 個 b(”abbb”, ” abbbb”) 。 那么,“ *”可以用0,表示,“ +”可以用 1 , 表示,“ ?”可以用0 ,1表示 注意:可以沒有下限,但是不能沒有上限!例如“ ab,5 ”是錯誤的寫法 “ | ”表示“
6、或”操作: “a|b ”:表示一個字符串里有” a”或者” b”; “ (a|bcd)ef ”:表示” aef ”或” bcdef ”; “(a|b)*c ”:表示一串” a”b ”混合的字符串后面跟一個” c”; 方括號” “表示在括號內的眾多字符中,選擇 1-N 個括號內的符合語法的字符作為結果,例 如 “ab “:表示一個字符串有一個” a”或” b”(相當于” a|b ”); “ a-d “:表示一個字符串包含小寫的 a 到d 中的一個(相當于” a|b|c|d ”或者” abcd “); “ a-zA-Z “:表示一個以字母開頭的字符串; “ 0-9a ”:表示 a 前有一位的數字;
7、 “ a-zA-Z0-9$ ”:表示一個字符串以一個字母或數字結束。 “. ”匹配除“ rn ”之外的任何單個字符: “a.a-z “:表示一個字符串有一個” a”后面跟著一個任意字符和一個小寫字母; “ .5$ ”:表示任意 1 個長度為 5 的字符串; “ num” 其中 num是一個正整數。表示” num”之前的字符出現相同的個數,例如 “ (.)1 :表示兩個連續(xù)的相同字符。 “101,2 ” : 表示數字 1后面跟著 1或者 2個0 ( “10,”100)。 ” 03, ” 表示數字為至少 3 個連續(xù)的 0 (“ 000”,“ 0000”,) 在方括號里用 表示不希望出現的字符, 應
8、在方括號里的第一位。 “ a-zA-Z4 ”表示兩個” ”中不應該出現字母)。 常用的還有: “ d ”匹配一個數字字符。等價于 0-9 。 “ D ”匹配一個非數字字符。等價于 0-9 。 “ w ”匹配包括下劃線的任何單詞字符。等價于“ A-Za-z0-9_ ”。 “ W ”匹配任何非單詞字符。等價于“ A-Za-z0-9_ ”。 iOS 中書寫正則表達式,碰到轉義字符,多加一個“”, 例如: 全數字字符: ” d+$ 三、iOS 中正則表達式 1. 正則表達式與 NSPredicate 連用, eg: - (BOOL)validateNumber:(NSString *) textStr
9、ing NSString* number=0-9+$; NSPredicate *numberPre = NSPredicate predicateWithFormat:SELF MATCHES %,number; return numberPre evaluateWithObject:textString; 2. NSString 方法 - (NSRange)rangeOfString:(NSString *)aString 1 options:(NSns)mask; 2 NSString *searchText = rangeOfString; 3NSRange range = searc
10、hText rangeOfString:0-9+$ options:NSRegularExpressionSearch; 4 if (range.location != NSNotFound) 5 NSLog(range : %, searchText substringWithRange:range); 6 3. 正則表達式類( NSRegularExpression ) NSString *searchText = you want to match; NSError *error = NULL; NSRegularExpression *regex = NSRegularExpressi
11、on regularExpressionWithPattern:0-9+$ options:NSRegularExpressionCaseInsensitive error: NSTextCheckingResult *result = regex firstMatchInString:searchText options:0 range:NSMakeRange(0, searchText length); if (result) NSLog(%, searchText substringWithRange:result.range); 四、常用的正則表達式 以下紅色字符串是常用的正則表達式(
12、以下正則表達式來自百度百科) 1. 驗證用戶名和密碼:” a-zA-Zw5,15$ ” 2. 驗證電話號碼:(” ( d3,4-)d7,8$ ”) eg:0511-6868686 ; 3. 驗證手機號碼:” 13|4|5|7|80-9d8$ ”; 4. 驗證身份證號( 15位或 18 位數字):” d140-9,0-9xX ”; 5. 驗證 Email 地址:( “w+(-+.w+)*w+(-.w+)*.w+(-.w+)*$”); 6. 只能輸入由數字和 26個英文字母組成的字符串: ( “A-Za-z0-9+$ ”) ; 7. 整數或者小數: 0-9+(.0,10
13、-9+)0,1$ 8. 只能輸入數字:” 0-9*$ ”。 9. 只能輸入 n 位的數字:” dn$ ”。 10. 只能輸入至少 n 位的數字:” dn,$ ”。 11. 只能輸入 mn位的數字:” dm,n$ ”。 12. 只能輸入零和非零開頭的數字:” (0|1-90-9*)$ ”。 13. 只能輸入有兩位小數的正實數:” 0-9+(.0-92)?$ ”。 14. 只能輸入有 13 位小數的正實數:” 0-9+(.0-91,3)?$ ”。 15. 只能輸入非零的正整數:” +?1-90-9*$ ”。 16. 只能輸入非零的負整數:” -1-90-9 *$。 17. 只能輸入長度為 3 的字
14、符:” .3$ ”。 18. 只能輸入由 26 個英文字母組成的字符串:” A-Za-z+$ ”。 19. 只能輸入由 26 個大寫英文字母組成的字符串:” A-Z+$ ”。 20. 只能輸入由 26 個小寫英文字母組成的字符串: a-z+$ 21. 驗證是否含有 ”等字符:” %=?$x22+ 22. 只能輸入漢字:” u4e00-u9fa50,$ ”。 23. 驗證 URL:” http:/(w-+.)+w-+(/w-./?% NSPredicate *predicate = NSPredicate predicateWithFormat:SELF MATCHE%S ,r egex; 3
15、BOOL isValid = predicate evaluateWithObject:email; 4 謂詞匹配比較靈活,但是需要有謂詞的相關知識。 2. 利用 rangeOfString : option :直接查找 NSString *searchText = / Do any additional setup view, typically from a nib.; NSRange range = searchText rangeOfString:(?:,)*. options:NSRegularExpressionSearch; if (range.location != NSNot
16、Found) NSLog(%, searchText substringWithRange:range); options 中設定 NSRegularExpressionSearch 就是表示利用正則表達式匹配,會返回第一個匹配結果 的位置。 3. 使用正則表達式類 NSString *searchText = / Do any additional setup after loading the view, typically from a nib.; NSError *error = NULL; NSRegularExpression *regex = NSRegularExpression 3 regularExpressionWithPattern:(?:,)*. 4 options:NSRegularExpressionCa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇南京金陵中學2024~2025學年高二下冊期末考試數學試題學生卷
- 江蘇常州聯盟學校2024~2025學年高一下冊期末調研數學試題學生卷
- 農村居民消費升級對農村金融服務的需求變化考核試卷
- 創(chuàng)新思維培訓效果評估考核試卷
- 設備自動化升級方案考核試卷
- 健康促進項目評估中的慢性病預防與控制效果評價考核試卷
- 水資源保護法規(guī)考核試卷
- 壓力傳感器數據傳輸考核試卷
- 哺乳期營養(yǎng)保健品效果評價考核試卷
- 智能化醫(yī)療器械產品追溯系統考核試卷
- 影視視聽視聽語言課件
- 活性污泥法PPT參考課件
- 語文六年級下冊口語交際辯論20張
- (全)變電站全壽命周期管理建議
- 2022年福建華僑大學研究生院招聘行政人員筆試備考試題及答案解析
- 熱烈歡迎領導蒞臨指導ppt模板
- VTS中雷達和AIS的技術應用與進展
- 芬頓試劑投加量計算
- 建筑自動化課件2013 10.通信網絡技術
- LS/T 8008-2010糧油倉庫工程驗收規(guī)程
- GB/T 18749-2002耐化學腐蝕陶瓷塔填料技術條件
評論
0/150
提交評論