版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、正則表達式在 IOS 中的應(yīng)用及 IOS中三種正則表達式的使用與比較 正則表達式在 ios 中應(yīng)用 一、什么是正則表達式 正則表達式,又稱正規(guī)表示法,是對字符串操作的一種邏輯公式。正則表達式可以檢測給定的字 符串是否符合我們定義的邏輯, 也可以從字符串中獲取我們想要的特定部分。 它可以迅速地用極簡單 的方式達到字符串的復(fù)雜控制。 二、正則表達式的語法 看一個過濾純數(shù)字的例子 - (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 的數(shù)字,語法是不是有一些怪異? 下面我們先撇開 iOS 中的正則表達式的語法,用通俗的正則表達式語法來為介紹一下。(iOS 語 法與通俗的正則表達式語法相同,不同在于對轉(zhuǎn)義字符的處理上 ( 語言類的都相同 ) ) 語法: 首先,特殊符號 和 $ 。他們的作用是分別指出一個字符串的開始和結(jié)束。eg: “one”:表示所有以” one”開始的
3、字符串(” one cat ”,” one123,); 類似于 :- (BOOL)hasPrefix:(NSString *)aString; “a dog$ ”:表示所以以” a dog ”結(jié)尾的字符串(” it is a dog ”,); 類似于 :- (BOOL)hasSuffix:(NSString *)aString; “ apple$ ”:表示開始和結(jié)尾都是” apple ”的字符串,這個是唯一的 ; “ banana”:表示任何包含” banana”的字符串。 類似于 iOS8 的新方法 - (BOOL)containsString:(NSString *)aString, 搜索
4、子串用的。 * ,+ 和? 這三個符號, 表示一個或 N 個字符重復(fù)出現(xiàn)的次數(shù)。 它們分別表示 “沒有或更多” (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” , )。 可以用大括號括起來( ),表示一個重復(fù)的具體范圍。例如 “ 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”; 方括號” “表示在括號內(nèi)的眾多字符中,選擇 1-N 個括號內(nèi)的符合語法的字符作為結(jié)果,例 如 “ab “:表示一個字符串有一個” a”或” b”(相當(dāng)于” a|b ”); “ a-d “:表示一個字符串包含小寫的 a 到d 中的一個(相當(dāng)于” a|b|c|d ”或者” abcd “); “ a-zA-Z “:表示一個以字母開頭的字符串; “ 0-9a ”:表示 a 前有一位的數(shù)字;
7、 “ a-zA-Z0-9$ ”:表示一個字符串以一個字母或數(shù)字結(jié)束。 “. ”匹配除“ rn ”之外的任何單個字符: “a.a-z “:表示一個字符串有一個” a”后面跟著一個任意字符和一個小寫字母; “ .5$ ”:表示任意 1 個長度為 5 的字符串; “ num” 其中 num是一個正整數(shù)。表示” num”之前的字符出現(xiàn)相同的個數(shù),例如 “ (.)1 :表示兩個連續(xù)的相同字符。 “101,2 ” : 表示數(shù)字 1后面跟著 1或者 2個0 ( “10,”100)。 ” 03, ” 表示數(shù)字為至少 3 個連續(xù)的 0 (“ 000”,“ 0000”,) 在方括號里用 表示不希望出現(xiàn)的字符, 應(yīng)
8、在方括號里的第一位。 “ a-zA-Z4 ”表示兩個” ”中不應(yīng)該出現(xiàn)字母)。 常用的還有: “ d ”匹配一個數(shù)字字符。等價于 0-9 。 “ D ”匹配一個非數(shù)字字符。等價于 0-9 。 “ w ”匹配包括下劃線的任何單詞字符。等價于“ A-Za-z0-9_ ”。 “ W ”匹配任何非單詞字符。等價于“ A-Za-z0-9_ ”。 iOS 中書寫正則表達式,碰到轉(zhuǎn)義字符,多加一個“”, 例如: 全數(shù)字字符: ” 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 位數(shù)字):” d140-9,0-9xX ”; 5. 驗證 Email 地址:( “w+(-+.w+)*w+(-.w+)*.w+(-.w+)*$”); 6. 只能輸入由數(shù)字和 26個英文字母組成的字符串: ( “A-Za-z0-9+$ ”) ; 7. 整數(shù)或者小數(shù): 0-9+(.0,10
13、-9+)0,1$ 8. 只能輸入數(shù)字:” 0-9*$ ”。 9. 只能輸入 n 位的數(shù)字:” dn$ ”。 10. 只能輸入至少 n 位的數(shù)字:” dn,$ ”。 11. 只能輸入 mn位的數(shù)字:” dm,n$ ”。 12. 只能輸入零和非零開頭的數(shù)字:” (0|1-90-9*)$ ”。 13. 只能輸入有兩位小數(shù)的正實數(shù):” 0-9+(.0-92)?$ ”。 14. 只能輸入有 13 位小數(shù)的正實數(shù):” 0-9+(.0-91,3)?$ ”。 15. 只能輸入非零的正整數(shù):” +?1-90-9*$ ”。 16. 只能輸入非零的負整數(shù):” -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 謂詞匹配比較靈活,但是需要有謂詞的相關(guān)知識。 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 中設(shè)定 NSRegularExpressionSearch 就是表示利用正則表達式匹配,會返回第一個匹配結(jié)果 的位置。 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加工課課件教學(xué)課件
- 幼師課件用電教學(xué)課件
- 2024年國際旅游開發(fā)與合作合同
- 2024年廣州市二手房交易合同(標(biāo)準(zhǔn)版)
- 2024年度智能制造設(shè)備采購合同
- 2024年度物業(yè)公司居民關(guān)系協(xié)調(diào)服務(wù)合同
- 2024年大數(shù)據(jù)中心合作運營合同
- 2024年工程質(zhì)量檢驗與確認合同
- 魚罐頭課件教學(xué)課件
- 2024年庫房租賃與健身器材存放合同
- 混凝土硫酸鹽侵蝕基本機理研究
- 《機械設(shè)計基礎(chǔ)A》機械電子 教學(xué)大綱
- 水工巖石分級及圍巖分類
- 基因擴增實驗室常用儀器使用課件
- 斜井敷設(shè)電纜措施
- 施工機械設(shè)備租賃實施方案
- 牙膏產(chǎn)品知識課件
- 液化氣站人員勞動合同范本
- 第一章 教育政策學(xué)概述
- 常見土源性寄生蟲演示文稿
- 全員育人導(dǎo)師制學(xué)生談話記錄
評論
0/150
提交評論