iOS 正則表達(dá)式詳解
一、系統(tǒng)自帶正則表達(dá)式用法
除了正則可以用,還有NSScanner這個(gè)類可以達(dá)到某些相同的效果
1、創(chuàng)建正則表達(dá)式對象
NSString * reg = @"[0-9]+";//字符串正則表達(dá)式NSError *error = NULL;//錯誤對象NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:reg options:NSRegularExpressionCaseInsensitive error:&error];//匹配reg的正則表達(dá)式對象
2、正則表達(dá)式對象可調(diào)用的方法
/**1 * 正則表達(dá)式匹配 * * @param string 在此字符串中匹配 * @param options 一般填0 * @param range 在此范圍內(nèi)匹配 * @param block 在block內(nèi)會把匹配到的結(jié)果逐個(gè)返回NSTextCheckingResult,通過此對象的range屬性可以查看匹配到的字符串的location和length,同過subString方法可以得到被匹配字符串 */- (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range usingBlock:(void (^)(NSTextCheckingResult * __nullable result, NSMatchingFlags flags, BOOL *stop))block; /**2 * 正則表達(dá)式匹配 * * @param string 在此字符串中匹配 * @param options 一般填0 * @param range 在此范圍內(nèi)匹配 * @param block 返回?cái)?shù)組,數(shù)組內(nèi)是每個(gè)匹配到的NSTextCheckingResult */- (NSArray<NSTextCheckingResult *> *)matchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range; /**3 * 正則表達(dá)式匹配 * * @param string 在此字符串中匹配 * @param options 一般填0 * @param range 在此范圍內(nèi)匹配 * @param block 返回匹配到的個(gè)數(shù) */- (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range; /**4 * 正則表達(dá)式匹配 * * @param string 在此字符串中匹配 * @param options 一般填0 * @param range 在此范圍內(nèi)匹配 * @param block 返回第一次匹配到的NSTextCheckingResult對象 */- (nullable NSTextCheckingResult *)firstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range; /**5 * 正則表達(dá)式匹配 * * @param string 在此字符串中匹配 * @param options 一般填0 * @param range 在此范圍內(nèi)匹配 * @param block 返回第一次匹配到的NSTextCheckingResult對象的range */- (NSRange)rangeOfFirstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;3.NSString //- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask;//- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)searchRange;//匹配文本-(void)matchIn{ NSString *searchText = @"rangeOf77Str88ing"; //只能匹配一次 NSRange range = [searchText rangeOfString:@"[0-9]+" options:NSRegularExpressionSearch]; //拿到匹配結(jié)果 if (range.location != NSNotFound) { NSString * searchString= [searchText substringWithRange:range]; NSLog(@"range.location = %lu range.length = %lu", (unsigned long)range.location,(unsigned long)range.length); NSLog(@"String = %@",searchString); }else{ NSLog(@"沒有匹配"); }} 4、正則表達(dá)式示例代碼 NSString *summaryString = [NSString stringWithFormat:@"對%@題 錯%@題 | 任務(wù)正確率%@ | 作業(yè)平均正確率%@", questionRight, questionWrong, questionRate, taskRate]; NSMutableAttributedString *summaryAttributString = [[NSMutableAttributedString alloc] initWithString:summaryString]; // 正則匹配,匹配數(shù)字和百分號 NSString *reg = @"[0-9]+|%"; NSError *error = nil; NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:reg options:NSRegularExpressionCaseInsensitive error:&error]; NSArray *array = [regex matchesInString:summaryString options:0 range:NSMakeRange(0, summaryString.length)]; if (array.count) { for (int i = 0; i < array.count; i++) { NSTextCheckingResult *result = array[i]; NSRange range = result.range; [summaryAttributString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithHexString:@"#e71419"] range:range]; } } self.summaryLabel.attributedText = summaryAttributString;
5.謂詞
//驗(yàn)證是否存在-(BOOL)validateRegular:(NSString * )regular matchText:(NSString *)text;{ //正則表達(dá)式格式 //NSString* regular=@"^1[0-9]{6}$"; //創(chuàng)建謂詞 NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regular]; //匹配字符串,若能匹配返回YES,否則返回NO; BOOL isMatch = [numberPre evaluateWithObject:text]; return isMatch;}
以上所述是小編給大家介紹的iOS正則表達(dá)式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- iOS中正則表達(dá)式的運(yùn)用示例代碼
- IOS中用正則表達(dá)式判斷輸入的內(nèi)容為8-16位且同時(shí)包含數(shù)字和字母
- iOS中常見正則表達(dá)式驗(yàn)證方法
- 淺談iOS應(yīng)用中的相關(guān)正則及驗(yàn)證
- iOS 正則表達(dá)式判斷手機(jī)號碼、固話
- iOS 正則表達(dá)式判斷純數(shù)字及匹配11位手機(jī)號碼的方法
- IOS正則表達(dá)式判斷輸入類型(整理)
- iOS開發(fā)驗(yàn)證判斷語句之正則表達(dá)式小結(jié)
- iOS開發(fā) 正則運(yùn)算詳細(xì)介紹
- IOS開發(fā)常用的正則表達(dá)式
- iOS中使用正則表達(dá)式NSRegularExpression 來驗(yàn)證textfiled輸入的內(nèi)容
- IOS中NSPredicate和NSRegularExpression校驗(yàn)正則表達(dá)式區(qū)別
相關(guān)文章
iOS11 SectionHeader 胡亂移動且滑動時(shí)出現(xiàn)重復(fù)內(nèi)容的解決方法
這篇文章主要介紹了iOS11 SectionHeader 胡亂移動且滑動時(shí)出現(xiàn)重復(fù)內(nèi)容的解決方法,需要的朋友可以參考下2017-11-11IOS 使用Block二次封裝AFNetworking 3.0詳解
這篇文章主要介紹了IOS 使用Block二次封裝AFNetworking 3.0詳解的相關(guān)資料,需要的朋友可以參考下2017-02-02IOS 網(wǎng)絡(luò)請求中設(shè)置cookie
這篇文章主要介紹了IOS 網(wǎng)絡(luò)請求中設(shè)置cookie的相關(guān)資料,需要的朋友可以參考下2017-06-06IOS Xcode調(diào)試常用命令和斷點(diǎn)整理
這篇文章主要介紹了IOS Xcode調(diào)試常用命令和斷點(diǎn)整理的相關(guān)資料,這里對IOS Xcode調(diào)試常用命令進(jìn)行了總結(jié),需要的朋友可以參考下2016-12-12