亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS中正則表達式的運用示例代碼

2020-07-26 02:42:02
字體:
來源:轉載
供稿:網友

前言

有時我們需要在一大段長文本中過濾出我們需要的字段,或者檢驗該文本是否符合要求(該文本是否是郵箱,鏈接,電話號碼或身份證),這時候就需要用到正則表達式了,iOS中也加入了相關的類來支持正則表達式的使用。本文詳細介紹了關于iOS正則表達式運用的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

一、NSRegularExpression

1. 正則表達式的創建

+ (nullable NSRegularExpression *)regularExpressionWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options error:(NSError **)error;- (nullable instancetype)initWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options error:(NSError **)error

該類中的屬性

  • pattern 返回正則表達式模式
  • options 返回創建正則表達式選項時使用的選項
  • numberOfCaptureGroups 返回正則表達式模式

options 定義的枚舉類型如下:

 typedef NS_OPTIONS(NSUInteger, NSRegularExpressionOptions) { NSRegularExpressionCaseInsensitive  = 1 << 0, //不區分大小寫的 NSRegularExpressionAllowCommentsAndWhitespace = 1 << 1, //忽略空格和# - NSRegularExpressionIgnoreMetacharacters = 1 << 2, //整體化 NSRegularExpressionDotMatchesLineSeparators = 1 << 3, //匹配任何字符,包括行分隔符 NSRegularExpressionAnchorsMatchLines  = 1 << 4, //允許^和$在匹配的開始和結束行 NSRegularExpressionUseUnixLineSeparators = 1 << 5, //(查找范圍為整個無效) NSRegularExpressionUseUnicodeWordBoundaries = 1 << 6 //(查找范圍為整個無效) };

2. 搜索字符串

//枚舉允許Block處理每個正則表達式匹配的字符串- (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range usingBlock:(void (NS_NOESCAPE ^)(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL *stop))block;//返回一個數組,包含字符串中正則表達式的所有匹配項- (NSArray<NSTextCheckingResult *> *)matchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;//返回字符串指定范圍內匹配數- (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;//返回字符串指定范圍內第一個匹配項。- (nullable NSTextCheckingResult *)firstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;//返回字符串指定范圍內第一個匹配的范圍- (NSRange)rangeOfFirstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;

NSMatchingOptions的定義如下:

typedef NS_OPTIONS(NSUInteger, NSMatchingOptions) { NSMatchingReportProgress   = 1 << 0,  /* 在長時間運行的匹配操作中定期調用Block */ NSMatchingReportCompletion  = 1 << 1,  /* 完成任何匹配后,調用Block一次*/ NSMatchingAnchored    = 1 << 2,  /*指定匹配僅限于搜索范圍開始時的匹配 */ NSMatchingWithTransparentBounds = 1 << 3,  /* 定匹配可以檢查超出搜索范圍的范圍的字符串的部分,以用于諸如字邊界檢測,前瞻等。如果搜索范圍包含整個字符串,該常量將不起作用 */ NSMatchingWithoutAnchoringBounds = 1 << 4  /* 指定^并且$不會自動匹配搜索范圍的開始和結束,但仍將與整個字符串的開頭和結尾相匹配。如果搜索范圍包含整個字符串,則該常量不起作用 */};

3.替換字符串

//返回與模板字符串替換的匹配正則表達式的新字符串- (NSString *)stringByReplacingMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)templ;//返回替換的個數- (NSUInteger)replaceMatchesInString:(NSMutableString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)templ;//自定義替換功能- (NSString *)replacementStringForResult:(NSTextCheckingResult *)result inString:(NSString *)string offset:(NSInteger)offset template:(NSString *)templ;//通過根據需要添加反斜杠轉義來返回模板字符串,以保護符合模式元字符的任何字符+ (NSString *)escapedTemplateForString:(NSString *)string;

使用示例

 NSString *str = @"aabbcccdeaargdo14141214aaghfh56821d3gad4"; NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"aa" options:NSRegularExpressionCaseInsensitive error:NULL]; if (expression != nil) {  //匹配到的第一組  NSTextCheckingResult *firstMatch = [expression firstMatchInString:str options:NSMatchingReportProgress range:NSMakeRange(0, str.length)];  NSRange range = [firstMatch rangeAtIndex:0];  NSString *result = [str substringWithRange:range];  NSLog(@"匹配到的第一組:%@",result);  //匹配到的個數  NSInteger number = [expression numberOfMatchesInString:str options:NSMatchingReportProgress range:NSMakeRange(0, str.length)];  NSLog(@"匹配到的個數%ld",number);  //配到到的所有數據  NSArray *allMatch = [expression matchesInString:str options:NSMatchingReportProgress range:NSMakeRange(0, str.length)];  for (int i = 0; i < allMatch.count; i ++) {   NSTextCheckingResult *matchItem = allMatch[i];   NSRange range = [matchItem rangeAtIndex:0];   NSString *result = [str substringWithRange:range];   NSLog(@"匹配到的數據:%@",result);  }  //匹配到第一組的位置  NSRange firstRange = [expression rangeOfFirstMatchInString:str options:NSMatchingReportProgress range:NSMakeRange(0, str.length)];  NSLog(@"匹配到第一組的位置:開始位置%lu--長度%lu",(unsigned long)firstRange.location,(unsigned long)firstRange.length);    //替換字符串  NSString *resultStr = [expression stringByReplacingMatchesInString:str options:NSMatchingReportProgress range:NSMakeRange(0, str.length) withTemplate:@"bbbb"];  NSLog(@"替換后的字符串:%@",resultStr);    NSInteger resultNum = [expression replaceMatchesInString:[str mutableCopy] options:NSMatchingReportProgress range:NSMakeRange(0, str.length) withTemplate:@"bbbb"];  NSLog(@"替換的個數;%ld",(long)resultNum); }打印log:2017-08-13 23:28:53.898 NSRegularExpressionDemo[82046:8220904] 匹配到的第一組:aaNSRegularExpressionDemo[82046:8220904] 匹配到的個數3NSRegularExpressionDemo[82046:8220904] 匹配到的數據:aaNSRegularExpressionDemo[82046:8220904] 匹配到的數據:aaNSRegularExpressionDemo[82046:8220904] 匹配到的數據:aaNSRegularExpressionDemo[82046:8220904] 匹配到第一組的位置:開始位置0--長度2NSRegularExpressionDemo[82046:8220904] 替換后的字符串:bbbbbbcccdebbbbrgdo14141214bbbbghfh56821d3gad4NSRegularExpressionDemo[82046:8220904] 替換的個數;3

二、字符串

//NSStringCompareOptions --> NSRegularExpressionSearch- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask;- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch;- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch locale:(nullable NSLocale *)locale

從上面的api可以看出,只能匹配到第一組

使用示例

 NSString *str = @"aabbcccdeaargdo14141214aaghfh56821d3gad4"; NSRange strMatchStr = [str rangeOfString:@"aa" options:NSRegularExpressionSearch]; NSLog(@"匹配到字符串的位置:開始位置%lu--長度%lu",(unsigned long)strMatchStr.location,(unsigned long)strMatchStr.length)打印log:NSRegularExpressionDemo[82080:8224265] 匹配到字符串的位置:開始位置0--長度2

三、謂詞

使用示例

 NSString *str2 = @"aabbcc"; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"^aa(.)*cc$"]; BOOL isMatch = [predicate evaluateWithObject:str2]; NSLog(@"匹配的結果:%d",isMatch);打印log:NSRegularExpressionDemo[82679:8253019] 匹配的結果:1

四、正則表達式

可以參考這篇文章:http://www.49028c.com/article/73342.htm

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品极品毛片系列视频| 麻豆一区二区在线观看| 国产情人节一区| 国产精品青草久久久久福利99| 黄色精品在线看| 日韩在线播放av| 国产精品久久婷婷六月丁香| 亚洲第一福利在线观看| 另类色图亚洲色图| 亚洲国产古装精品网站| 国产精品18久久久久久麻辣| 亚洲日韩欧美视频| 成人激情在线播放| 姬川优奈aav一区二区| 色综久久综合桃花网| 欧美孕妇性xx| 欧美精品做受xxx性少妇| 成人一区二区电影| 亚洲人成电影网站| 国产精品偷伦免费视频观看的| 俺去了亚洲欧美日韩| 亚洲成av人影院在线观看| 91国内揄拍国内精品对白| 国产精品999999| 7777免费精品视频| 欧美精品www在线观看| 欧美裸体男粗大视频在线观看| www.日韩不卡电影av| 久久韩国免费视频| 日韩av网站在线| 97视频在线观看亚洲| 欧美激情一区二区三区在线视频观看| 亚洲精品久久久久中文字幕欢迎你| 国外日韩电影在线观看| 国产网站欧美日韩免费精品在线观看| 2019中文字幕免费视频| 国产精品视频免费在线| 亚洲一区亚洲二区亚洲三区| 亚洲精品一区二区三区婷婷月| 国产精品极品在线| 亚洲jizzjizz日本少妇| 欧美色图在线视频| 57pao精品| 精品日韩美女的视频高清| 亚洲免费福利视频| 国产成人久久久精品一区| 成人久久久久爱| 亚洲精品电影在线观看| 亚洲女人天堂色在线7777| 亚洲电影免费观看| 神马久久桃色视频| 色综合视频一区中文字幕| 亚洲精品欧美极品| 成人黄色在线免费| 91在线观看免费| 在线视频中文亚洲| 成人黄色午夜影院| 国产精品99免视看9| 久久6免费高清热精品| 91精品国产高清自在线| 91久久久在线| 91亚洲国产精品| 国产日韩换脸av一区在线观看| 97超碰色婷婷| 亚洲天堂男人天堂女人天堂| 亚洲一区999| 欧美wwwxxxx| 亚洲免费视频网站| 日韩在线观看网址| 精品福利一区二区| 欧洲美女免费图片一区| 亚洲视屏在线播放| 国产欧美韩国高清| 亚洲a一级视频| 国产成人精品久久久| 色综合天天狠天天透天天伊人| 91情侣偷在线精品国产| 国产美女精品免费电影| 亚洲第一免费网站| 色黄久久久久久| 亚洲第一av网站| 欧美一级淫片丝袜脚交| 欧美乱大交做爰xxxⅹ性3| 26uuu亚洲伊人春色| 欧美日韩亚洲国产一区| 91在线观看免费高清完整版在线观看| 91九色国产社区在线观看| 亚洲第一网中文字幕| 成人免费网视频| 国产精品视频内| 欧美一区二区影院| 亚洲欧美国产高清va在线播| 日本精品久久电影| www.亚洲男人天堂| 4p变态网欧美系列| 欧美成人精品一区| 91沈先生在线观看| 一夜七次郎国产精品亚洲| 国产成人精品免费久久久久| 91精品久久久久久久久久久久久| 久久久97精品| 最近的2019中文字幕免费一页| 亚洲黄色av女优在线观看| 国产精品爽黄69| 欧美一级bbbbb性bbbb喷潮片| 日韩在线视频一区| 国产日韩欧美中文在线播放| 欧美在线一级va免费观看| 操日韩av在线电影| 欧美高跟鞋交xxxxhd| 中文日韩在线观看| 91精品国产色综合久久不卡98口| 亚洲人成绝费网站色www| 国产亚洲a∨片在线观看| 欧美一级片在线播放| 国产精品视频久| 成人444kkkk在线观看| 伊人久久免费视频| 精品香蕉在线观看视频一| 久久艹在线视频| 色综合导航网站| 成人国产精品一区| 欧美日韩国产中文字幕| 在线视频中文亚洲| 欧美视频在线观看 亚洲欧| 国产一区二区三区在线看| 久久久这里只有精品视频| 亚洲成人精品av| 精品中文字幕在线| 欧美乱人伦中文字幕在线| 97在线观看视频国产| 国产精品视频地址| 伊是香蕉大人久久| 欧美日韩在线视频首页| 欧美黑人xxxⅹ高潮交| 国语自产在线不卡| 色综合久久88| 在线观看精品自拍私拍| 亚洲天堂影视av| 国产日韩视频在线观看| 国产精品一区二区三| 国产精品日韩在线观看| 亚洲最大的av网站| 国产主播喷水一区二区| 欧美综合国产精品久久丁香| 亚洲国产成人av在线| 亚洲va码欧洲m码| 91九色综合久久| 欧美日韩国产专区| 国产一区二区三区在线播放免费观看| 午夜精品蜜臀一区二区三区免费| 亚洲欧美日韩第一区| 色噜噜狠狠色综合网图区| 欧美又大又硬又粗bbbbb| 国产精品久久久久一区二区| 国产亚洲人成a一在线v站| 97精品国产97久久久久久| 欧美国产第一页| 91美女福利视频高清| 中文字幕成人在线| 国产精品爽黄69| 久久九九国产精品怡红院| 亚洲free性xxxx护士白浆| 国产视频精品免费播放|