站長資訊網
最全最豐富的資訊網站

iOS中使用正則表達式NSRegularExpression 來驗證textfiled輸入的內容

何謂正則表達式

正則表達式(regular expression),在計算機科學中,是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。在很多文本編輯器或其他工具里,正則表達式通常被用來檢索和/或替換那些符合某個模式的文本內容。正則表達式這個概念最初是由Unix中的工具軟件(例如sed和grep)普及開的。正則表達式通常縮寫成“regex”,單數有regexp、regex,復數有regexps、regexes、regexen。

正則表達式組成

正則表達式有兩種類型的字符組成

第一種:用來匹配的字符,或者叫常規字符

第二種:控制字符或具有特殊含義的元字符

iphone 4.0以后就開始支持正則表達式的使用了,在ios4.0中正則表達式的使用是使用NSRegularExpression類來調用。

1. 下面一個簡單的使用正則表達式的一個例子:NSRegularExpression 類

  -(void)parseString{  //組裝一個字符串,需要把里面的網址解析出來  NSString *urlString=@"sfdsfhttp://www.baidu.com";  //NSRegularExpression類里面調用表達的方法需要傳遞一個NSError的參數。下面定義一個   NSError *error;  //http+:[^\s]* 這個表達式是檢測一個網址的。    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"http+:[^\s]*" options:0 error:&error];    if (regex != nil) {    NSTextCheckingResult *firstMatch=[regex firstMatchInString:urlString options:0range:NSMakeRange(0, [urlString length])];    if (firstMatch) {     NSRange resultRange = [firstMatch rangeAtIndex:0]; //等同于 firstMatch.range --- 相匹配的范圍     //從urlString當中截取數據    NSString *result=[urlString substringWithRange:resultRange];    //輸出結果    NSLog(@"%@",result);    }    }  }

2.使用正則表達式來判斷

  //初始化一個NSRegularExpression 對象,并設置檢測對象范圍為:0-9   NSRegularExpression *regex2 = [NSRegularExpression regularExpressionWithPattern:@"^[0-9]*$" options:0 error:nil];      if (regex2)      {//對象進行匹配         NSTextCheckingResult *result2 = [regex2 firstMatchInString:textField.text options:0 range:NSMakeRange(0, [textField.text length])];        if (result2) {        }  }

1.判斷郵箱格式是否正確的代碼:NSPredicatel類

//利用正則表達式驗證

NSPredicatel類:主要用來指定過濾器的條件,該對象可以準確的描述所需條件,對每個對象通過謂詞進行篩選,判斷是否與條件相匹配。謂詞是指在計算機中表示計算真假值的函數。原理和用法都類似于SQL查詢中的where,作用相當于數據庫的過濾取。主要用于從集合中分揀出符合條件的對象,也可以用于字符串的正則匹配

  -(BOOL)isValidateEmail:(NSString *)email  {    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",emailRegex];    return [emailTest evaluateWithObject:email];  }

2.匹配9-15個由字母/數字組成的字符串的正則表達式:

    NSString * regex = @"^[A-Za-z0-9]{9,15}$";    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];    BOOL isMatch = [pred evaluateWithObject:txtfldPhoneNumber.text];

Cocoa用NSPredicate描述查詢的方式,原理類似于在數據庫中進行查詢

用BETWEEN,IN,BEGINWITH,ENDWITH,CONTAINS,LIKE這些謂詞來構造NSPredicate,必要的時候使用SELF直接對自己進行匹配

  //基本的查詢   NSPredicate *predicate;   predicate = [NSPredicate predicateWithFormat: @"name == 'Herbie'"];     BOOL match = [predicate evaluateWithObject: car];     NSLog (@"%s", (match) ? "YES" : "NO");   //在整個cars里面循環比較     predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];     NSArray *cars = [garage cars];     for (Car *car in [garage cars]) {       if ([predicate evaluateWithObject: car]) {         NSLog (@"%@", car.name);       }     }   //輸出完整的信息     predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];     NSArray *results;     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", results);   //含有變量的謂詞     NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:@"name == $NAME"];     NSDictionary *varDict;     varDict = [NSDictionary dictionaryWithObjectsAndKeys:           @"Herbie", @"NAME", nil];     predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];     NSLog(@"SNORGLE: %@", predicate);     match = [predicate evaluateWithObject: car];    NSLog (@"%s", (match) ? "YES" : "NO");   //注意不能使用$VARIABLE作為路徑名,因為它值代表值   //謂詞字符竄還支持c語言中一些常用的運算符     predicate = [NSPredicate predicateWithFormat:            @"(engine.horsepower > 50) AND (engine.horsepower < 200)"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"oop %@", results);     predicate = [NSPredicate predicateWithFormat: @"name < 'Newton'"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", [results valueForKey: @"name"]);   //強大的數組運算符     predicate = [NSPredicate predicateWithFormat:            @"engine.horsepower BETWEEN { 50, 200 }"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", results);     NSArray *betweens = [NSArray arrayWithObjects:                [NSNumber numberWithInt: 50], [NSNumber numberWithInt: 200], nil];     predicate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN %@", betweens];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", results);     predicateTemplate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN $POWERS"];     varDict = [NSDictionary dictionaryWithObjectsAndKeys: betweens, @"POWERS", nil];     predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", results);   //IN運算符     predicate = [NSPredicate predicateWithFormat: @"name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", [results valueForKey: @"name"]);     predicate = [NSPredicate predicateWithFormat: @"SELF.name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", [results valueForKey: @"name"]);     names = [cars valueForKey: @"name"];     predicate = [NSPredicate predicateWithFormat: @"SELF IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];     results = [names filteredArrayUsingPredicate: predicate];//這里限制了SELF的范圍     NSLog (@"%@", results);   //BEGINSWITH,ENDSWITH,CONTAINS   //附加符號,[c],[d],[cd],c表示不區分大小寫,d表示不區分發音字符,cd表示什么都不區分     predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'Bad'"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", results);     predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'HERB'"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", results);     predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH[cd] 'HERB'"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", results);   //LIKE運算符(通配符)     predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '*er*'"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", results);     predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '???er*'"];     results = [cars filteredArrayUsingPredicate: predicate];     NSLog (@"%@", results);   //基本的查詢  NSPredicate *predicate;  predicate = [NSPredicate predicateWithFormat: @"name == 'Herbie'"];    BOOL match = [predicate evaluateWithObject: car];    NSLog (@"%s", (match) ? "YES" : "NO");  //在整個cars里面循環比較    predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];    NSArray *cars = [garage cars];    for (Car *car in [garage cars]) {      if ([predicate evaluateWithObject: car]) {        NSLog (@"%@", car.name);      }    }  //輸出完整的信息    predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];    NSArray *results;    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);  //含有變量的謂詞    NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:@"name == $NAME"];    NSDictionary *varDict;    varDict = [NSDictionary dictionaryWithObjectsAndKeys:          @"Herbie", @"NAME", nil];    predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];    NSLog(@"SNORGLE: %@", predicate);    match = [predicate evaluateWithObject: car];   NSLog (@"%s", (match) ? "YES" : "NO");  //注意不能使用$VARIABLE作為路徑名,因為它值代表值  //謂詞字符竄還支持c語言中一些常用的運算符    predicate = [NSPredicate predicateWithFormat:           @"(engine.horsepower > 50) AND (engine.horsepower < 200)"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"oop %@", results);    predicate = [NSPredicate predicateWithFormat: @"name < 'Newton'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", [results valueForKey: @"name"]);  //強大的數組運算符    predicate = [NSPredicate predicateWithFormat:           @"engine.horsepower BETWEEN { 50, 200 }"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);    NSArray *betweens = [NSArray arrayWithObjects:               [NSNumber numberWithInt: 50], [NSNumber numberWithInt: 200], nil];    predicate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN %@", betweens];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);    predicateTemplate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN $POWERS"];    varDict = [NSDictionary dictionaryWithObjectsAndKeys: betweens, @"POWERS", nil];    predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);  //IN運算符    predicate = [NSPredicate predicateWithFormat: @"name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", [results valueForKey: @"name"]);    predicate = [NSPredicate predicateWithFormat: @"SELF.name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", [results valueForKey: @"name"]);    names = [cars valueForKey: @"name"];    predicate = [NSPredicate predicateWithFormat: @"SELF IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];    results = [names filteredArrayUsingPredicate: predicate];//這里限制了SELF的范圍    NSLog (@"%@", results);  //BEGINSWITH,ENDSWITH,CONTAINS  //附加符號,[c],[d],[cd],c表示不區分大小寫,d表示不區分發音字符,cd表示什么都不區分    predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'Bad'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);    predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'HERB'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);    predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH[cd] 'HERB'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);  //LIKE運算符(通配符)    predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '*er*'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);    predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '???er*'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);

以上就是小編給大家分享的iOS中使用正則表達式NSRegularExpression 來驗證textfiled輸入的內容,希望大家喜歡。

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
精品日韩亚洲AV无码一区二区三区| 国产99久久精品一区二区| 精品视频一区在线观看| 国产看午夜精品理论片| 国产精品无码久久四虎| 99精品人妻无码专区在线视频区| 久久精品夜夜夜夜夜久久| 久久久久成人精品一区二区| 国产一成人精品福利网站| 久久夜色精品国产| 国产网红主播无码精品| 亚洲午夜精品久久久久久浪潮| 日韩精品福利视频一区二区三区| 亚洲日韩国产成网在线观看| 国产成人精品一区二三区| 日本精品一二三区| 国内精品videofree720| 国产精品99久久久久久人四虎| 国精品产区WNW2544| 麻豆精品无码国产在线果冻| 热久久美女精品天天吊色| 欧美日韩亚洲精品| 精品少妇人妻AV一区二区| 久久精品无码一区二区三区不卡 | 成人精品视频99在线观看免费| 国产精品二区观看| 国产成人亚洲精品91专区手机| 亚洲av无码成人精品区在线播放 | 精品国精品国产自在久国产应用男| CAOPORM国产精品视频免费| 亚洲午夜福利精品久久| 精品国产日韩亚洲一区| 久久精品一区二区三区中文字幕| 久久久精品日本一区二区三区| 孩交VIDEOS精品乱子| 国产综合色在线精品| 国产精品视频一区二区三区无码| 久久只有这里的精品69| 99re66热这里都是精品| 亚洲国产综合精品| 思思re热免费精品视频66|