正則表達(dá)式
iOS中,通過傳入正則表達(dá)式字符串寸潦,獲取到NSRegularExpression對象,使用matchesInString等相關(guān)方法社痛,傳入字符串進(jìn)行匹配见转,還可使用NSReplacement擴(kuò)展方法進(jìn)行正則替換等。如:
//block枚舉匹配結(jié)果
- (void)enumerateMatchesInString:(NSString*)string options:(NSMatchingOptions)options range:(NSRange)range usingBlock:(void(NS_NOESCAPE^)(NSTextCheckingResult*_Nullableresult,NSMatchingFlagsflags,BOOL*stop))block;
//返回匹配數(shù)組
- (NSArray <NSTextCheckingResult *> *)matchesInString:(NSString*)string options:(NSMatchingOptions)options range:(NSRange)range;
//使用templ根據(jù)正則表達(dá)式對string進(jìn)行正則替換
- (NSString*)stringByReplacingMatchesInString:(NSString*)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString*)templ;
常用正則列舉
電話號(hào)碼:^1[34578]\\d{9}$(^匹配字符串開始位置蒜哀;[]字符集合或范圍斩箫;\轉(zhuǎn)義字符向后引用用于轉(zhuǎn)義;\d匹配一個(gè)數(shù)字撵儿;{n}匹配n次乘客;{n,m}匹配n-m次;$匹配字符串結(jié)束位置)
中文字符:[\u4e00-\u9fa5]
純數(shù)字:^[0-9]*$
URL(含協(xié)議或直接www.開頭):\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))
謂詞(NSPredicate)
組成:表達(dá)式+運(yùn)算符+值淀歇。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF = 123"];
NSPredicate對象可通過evaluateWithObject方法判斷對象是否滿足謂詞表達(dá)式易核。
NSPredicate對象可作為NSArray、NSMutableArray的方法(如filteredArrayUsingPredicate)的傳入?yún)?shù)進(jìn)行數(shù)組篩選浪默。
運(yùn)算符
比較運(yùn)算符(=/==牡直,<=,!=纳决,BETWEEN):@"SELF BETWEEN {100, 200}"
邏輯運(yùn)算符(&& / AND碰逸,|| / OR,! / NOT):@"SELF > 2 && SELF < 5"
字符串匹配運(yùn)算符(BEGINSWITH阔加、ENDSWITH饵史、CONTAINS、LIKE、MATCHES):@"%@ LIKE '*test?'", abctestz
注:?代表單個(gè)通配符约急,*代表任意多個(gè)字符零远,運(yùn)算符后使用[c]不區(qū)分大小寫。
注:MATCHES用于匹配正則表達(dá)式@"SELF MATCHES %@", ^[1][3-8]\\d{9}$厌蔽。
集合運(yùn)算符(ALL牵辣,ANY,SOME奴饮,NONE纬向,IN)
簡單使用
1、判斷模型中的屬性是否滿足謂詞表達(dá)式
NSPredicate *testPred = [NSPredicate predicateWithFormat:@"age > 18"];
[testPred evaluateWithObject:personModel];
2戴卜、filteredArrayUsingPredicate過濾數(shù)組集合
3逾条、使用占位符參數(shù)(%K,%@投剥,SELF等)