//
// 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];
// 判斷是否是手機(jī)號碼
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}$";
// 一個判斷是否是手機(jī)號碼的正則表達(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];
}
}
}
}
// 篩選出是手機(jī)號碼的元素
- (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}$";
// 一個判斷是否是手機(jī)號碼的正則表達(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-手機(jī)號碼:%@",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)系作者