簡年9:利用NSRegularExpression正則表達(dá)式過濾數(shù)組中的11位電話號碼

//  ViewController.h
//  正則表達(dá)式練習(xí)
//
//  Created by zengchunjun on 16/10/8.
//  Copyright ? 2016年 zeng. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController


@end

//
//  ViewController.m
//  正則表達(dá)式練習(xí)
//
//  Created by zengchunjun on 16/10/8.
//  Copyright ? 2016年 zeng. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic,strong)NSMutableArray *testArray;
@property (nonatomic,strong)NSMutableArray *phoneNumbers;
@end

@implementation ViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.phoneNumbers = [NSMutableArray array];
    self.testArray = [[NSMutableArray alloc ]  initWithObjects:@"137624 05923",@"136158fs78910",@"13062405923",@"13418 141808",@"134",@"1341352136138",@"1776 2405923",nil];
    // 判斷是否是手機號碼
    NSMutableArray *newArray = [self selectedPhoneNumber:self.testArray];
    NSLog(@"%@",newArray);
    
    // 替換指定的字符
   [self replaceReguationItems:self.testArray];
    NSLog(@"%@",self.testArray);
    
}

// 把是電話號碼的元素替換成88888888
- (void)replaceReguationItems:(NSMutableArray *)aArray
{
    /**
     * 移動號段正則表達(dá)式
     */
    NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
    /**
     * 聯(lián)通號段正則表達(dá)式
     */
    NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
    /**
     * 電信號段正則表達(dá)式
     */
    NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
    
    // 一個判斷是否是手機號碼的正則表達(dá)式
    NSString *pattern = [NSString stringWithFormat:@"(%@)|(%@)|(%@)",CM_NUM,CU_NUM,CT_NUM];
    
    NSRegularExpression *regularExpression = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
    
    for (int i = 0; i < aArray.count; i++) {
        
        NSString *item = aArray[i];
        item = [item stringByReplacingOccurrencesOfString:@" " withString:@""];
        
        NSArray *matches = [regularExpression matchesInString:item options:0 range:NSMakeRange(0, item.length)];
        if (matches.count == 1 && item.length == 11) {
            
            for (NSTextCheckingResult *matchResult in matches) {
                
                NSString *replacedStr = [regularExpression stringByReplacingMatchesInString:item options:0 range:matchResult.range withTemplate:@"88888888"];
                [self.testArray replaceObjectAtIndex:i withObject:replacedStr];
            }
        }
        
    }
    
    
}

// 篩選出是手機號碼的元素
- (NSMutableArray *)selectedPhoneNumber:(NSMutableArray *)aArray
{
    /**
     * 移動號段正則表達(dá)式
     */
    NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
    /**
     * 聯(lián)通號段正則表達(dá)式
     */
    NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
    /**
     * 電信號段正則表達(dá)式
     */
    NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
    
    // 一個判斷是否是手機號碼的正則表達(dá)式
    NSString *pattern = [NSString stringWithFormat:@"(%@)|(%@)|(%@)",CM_NUM,CU_NUM,CT_NUM];
    
    NSRegularExpression *regularExpression = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
    
    for (int i = 0;i < aArray.count;i++) {
        
        NSString *mobile = [aArray[i] stringByReplacingOccurrencesOfString:@" " withString:@""];
        if (mobile.length != 11) {
            continue;
        }
        
        // 無符號整型數(shù)據(jù)接收匹配的數(shù)據(jù)的數(shù)目
        NSUInteger numbersOfMatch = [regularExpression numberOfMatchesInString:mobile options:NSMatchingReportProgress range:NSMakeRange(0, mobile.length)];
        if (numbersOfMatch>0) {
            NSLog(@"%d-手機號碼:%@",i,mobile);
            [self.phoneNumbers addObject:mobile];
        }
        
    }
    
    return self.phoneNumbers;
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容