美文网首页iOS学习
关于几个常见的正则表达式(未完待续。。。)

关于几个常见的正则表达式(未完待续。。。)

作者: 暮雨霜白 | 来源:发表于2016-12-06 17:37 被阅读25次

目前,只遇到身份证,手机号,工作单位电话号,银行卡号,以后遇到其他的会陆续添加。。。下面开车

身份证:

//身份证号的正则表达

-(BOOL)validateIdentityCard: (NSString *)identityCard

{

if (identityCard.length != 18) {

return  NO;

}

NSArray* codeArray = [NSArray arrayWithObjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2", nil];

NSDictionary* checkCodeDic = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1",@"0",@"X",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2", nil]  forKeys:[NSArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil]];

NSScanner* scan = [NSScanner scannerWithString:[identityCard substringToIndex:17]];

int val;

BOOL isNum = [scan scanInt:&val] && [scan isAtEnd];

if (!isNum) {

return NO;

}

int sumValue = 0;

for (int i =0; i<17; i++) {

sumValue+=[[identityCard substringWithRange:NSMakeRange(i , 1) ] intValue]* [[codeArray objectAtIndex:i] intValue];

}

NSString* strlast = [checkCodeDic objectForKey:[NSString stringWithFormat:@"%d",sumValue%11]];

if ([strlast isEqualToString: [[identityCard substringWithRange:NSMakeRange(17, 1)]uppercaseString]]) {

return YES;

}

return  NO;

}

手机号:

//手机号码的正则表达式

- (BOOL)valiMobile:(NSString *)mobile

{

mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""];

if (mobile.length != 11)

{

return NO;

}else{

/**

* 移动号段正则表达式

*/

NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";

/**

* 联通号段正则表达式

*/

NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";

/*** 电信号段正则表达式

*/

NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";

NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];

BOOL isMatch1 = [pred1 evaluateWithObject:mobile];

NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];

BOOL isMatch2 = [pred2 evaluateWithObject:mobile];

NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];

BOOL isMatch3 = [pred3 evaluateWithObject:mobile];

if (isMatch1 || isMatch2 || isMatch3) {

return YES;

}else{

return NO;

}

}

}

银行卡号:

//银行卡号的正则表达(位数)

-(BOOL)validateBankCardNumber: (NSString *)bankCardNumber

{

BOOL flag;

if (bankCardNumber.length <= 0) {

flag = NO;

return flag;

}

NSString *regex2 = @"^(\\d{15,30})";

NSPredicate *bankCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];

return [bankCardPredicate evaluateWithObject:bankCardNumber];

}

工作单位电话,加区号:

//工作单位电话正则验证

-(BOOL)validatetelenumb: (NSString *)telenumb

{

BOOL flag;

if (telenumb.length <= 0) {

flag = NO;

return flag;

}

NSString *regex2 = @"^(\\d{3,4})\\d{7,8}$";

NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];

return [identityCardPredicate evaluateWithObject:telenumb];

}

未完待续。。。

相关文章

  • 关于几个常见的正则表达式(未完待续。。。)

    目前,只遇到身份证,手机号,工作单位电话号,银行卡号,以后遇到其他的会陆续添加。。。下面开车 身份证: //身份证...

  • 常用正则表达式

    常用正则表达式大全!(例如:匹配中文、匹配html)目录导航一、常见正则表达式二、正则表达式应用一、常见正则表达式...

  • 2017-10-18

    未完待续 人生有几个对不起~

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 关于拔牙矫治的几个常见疑问?

    拔牙矫正是正畸历史上非常悠久的一个话题了,从一百多年前就有了拔牙矫正。目前,在欧美国家大概有15%-20%的患者是...

  • 关于植物的几个常见Q&A

    我是包青松,今天是我的802篇分享。 我现在结合线上植物医院,给大家每天分享一点与植物相关的知识。 Q:你最欣赏植...

  • iOS开发常用方法(正则匹配)

    写在前面 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 iOS中的NSRegula...

  • 常用的正则表达式

    一、主要是验证数字的常见正则表达式: 二、主要校验字符的正则表达式: 三、特殊需求正则表达式: 下面给大家介绍在前...

  • GNU/Linux VS Linux & Free VS Ope

    本文用于区分计算机中几个常见的名词 一、GNU/Linux VS Linux 关于GNU/Linux常见问答 1....

  • shell之正则表达式

    1.正则表达式 正则表达式:描述某些字符串匹配规则的工具 2.常见的支持正则表达式的UNIX工具: grep命令族...

网友评论

    本文标题:关于几个常见的正则表达式(未完待续。。。)

    本文链接:https://www.haomeiwen.com/subject/xeprmttx.html