博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS常用正则表达式判断
阅读量:5161 次
发布时间:2019-06-13

本文共 2847 字,大约阅读时间需要 9 分钟。

//校验密码+(BOOL)checkPass:(NSString*)pass{    if(pass==nil)    {        return NO;    }    NSString *regex = @"^[A-Za-z0-9]+$";    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@ AND SELF.length > 5 AND SELF.length < 17", regex];    return [predicate evaluateWithObject:pass];}//校验电话号码+(BOOL)checkIsPhone:(NSString*)str{        NSString *regex = @"(13[0-9]|14[57]|15[0123456789]|18[023456789])\\d{8}";    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];    return [predicate evaluateWithObject:str];}//校验是否是数字+(BOOL)checkIsNumber:(NSString*)str{    if(str==nil)    {        return NO;    }    NSString *regex = @"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$";//@"^[0-9]+$";    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@ ", regex];    return [predicate evaluateWithObject:str];}

//身份证号+ (BOOL)CheckIsIdentityCard: (NSString *)identityCard{    //判断是否为空    if (identityCard==nil||identityCard.length <= 0) {        return NO;    }    //判断是否是18位,末尾是否是x    NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];    if(![identityCardPredicate evaluateWithObject:identityCard]){        return NO;    }    //判断生日是否合法    NSRange range = NSMakeRange(6,8);    NSString *datestr = [identityCard substringWithRange:range];    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];    [formatter setDateFormat : @"yyyyMMdd"];    if([formatter dateFromString:datestr]==nil){        return NO;    }        //判断校验位    if(identityCard.length==18)    {        NSArray *idCardWi= @[ @"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2" ]; //将前17位加权因子保存在数组里        NSArray * idCardY=@[ @"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2" ]; //这是除以11后,可能产生的11位余数、验证码,也保存成数组        int idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和        for(int i=0;i<17;i++){            idCardWiSum+=[[identityCard substringWithRange:NSMakeRange(i,1)] intValue]*[idCardWi[i] intValue];        }                int idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置        NSString *idCardLast=[identityCard substringWithRange:NSMakeRange(17,1)];//得到最后一位身份证号码                //如果等于2,则说明校验码是10,身份证号码最后一位应该是X        if(idCardMod==2){            if([idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]){                return YES;            }else{                return NO;            }        }else{            //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码            if([idCardLast intValue]==[idCardY[idCardMod] intValue]){                return YES;            }else{                return NO;            }        }    }    return NO;}

转载于:https://www.cnblogs.com/zzzili/p/6662470.html

你可能感兴趣的文章
shell export 作用--转载
查看>>
Hadoop集群参数和常用端口
查看>>
从RTSP协议传输的H264视频流中取出每一个帧属于I、P、B中的哪一种帧
查看>>
Python+Selenium学习笔记4 - submit&get_attribute
查看>>
Matrix.setRectToRect
查看>>
JavaScript中的枚举
查看>>
Spring笔记1——Spring起源及其核心技术
查看>>
深入理解TransactionTemplate编程式事务
查看>>
Jzoj3154 删数字
查看>>
谈谈localhost与127.0.0.1
查看>>
习题2-2 阶梯电价
查看>>
[分享] 采用opencv_cascadetrain进行训练的步骤及注意事项 [复制链接]
查看>>
【ABP杂烩】面向切面编程(AOP)知识总结
查看>>
Java重点识记
查看>>
《A_Pancers》团队项目用户验收评审
查看>>
用EWARM开发stm32程序注意事项
查看>>
MacBook Pro实现共享屏幕(多台mac之间)
查看>>
2018/7/7-纪中某C组题【jzoj1494,jzoj1495,jzoj1496,jzoj1497】
查看>>
[Python] Python list slice syntax fun
查看>>
《使用 Microsoft .NET 的企业解决方案模式》
查看>>