iOS 常用正则校验

  1. //校验密码  
  2. +(BOOL)checkPass:(NSString*)pass  
  3. {  
  4.     if(pass==nil)  
  5.     {  
  6.         return NO;  
  7.     }  
  8.     NSString *regex = @"^[A-Za-z0-9]+$";  
  9.     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@ AND SELF.length > 5 AND SELF.length < 17", regex];  
  10.     return [predicate evaluateWithObject:pass];  
  11. }  
  12. //校验电话号码  
  13. +(BOOL)checkIsPhone:(NSString*)str  
  14. {  
  15.       
  16.     NSString *regex = @"(13[0-9]|14[57]|15[0123456789]|18[023456789])\\d{8}";  
  17.     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];  
  18.     return [predicate evaluateWithObject:str];  
  19.   
  20. }  
  21. //校验是否是数字  
  22. +(BOOL)checkIsNumber:(NSString*)str  
  23. {  
  24.     if(str==nil)  
  25.     {  
  26.         return NO;  
  27.     }  
  28.     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]+$";  
  29.     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@ ", regex];  
  30.     return [predicate evaluateWithObject:str];  
  31. }  


[objc]  view plain  copy
  1. //身份证号  
  2. + (BOOL)CheckIsIdentityCard: (NSString *)identityCard  
  3. {  
  4.     //判断是否为空  
  5.     if (identityCard==nil||identityCard.length <= 0) {  
  6.         return NO;  
  7.     }  
  8.     //判断是否是18位,末尾是否是x  
  9.     NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";  
  10.     NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];  
  11.     if(![identityCardPredicate evaluateWithObject:identityCard]){  
  12.         return NO;  
  13.     }  
  14.     //判断生日是否合法  
  15.     NSRange range = NSMakeRange(6,8);  
  16.     NSString *datestr = [identityCard substringWithRange:range];  
  17.     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
  18.     [formatter setDateFormat : @"yyyyMMdd"];  
  19.     if([formatter dateFromString:datestr]==nil){  
  20.         return NO;  
  21.     }  
  22.       
  23.     //判断校验位  
  24.     if(identityCard.length==18)  
  25.     {  
  26.         NSArray *idCardWi= @[ @"7"@"9"@"10"@"5"@"8"@"4"@"2"@"1"@"6"@"3"@"7"@"9"@"10"@"5"@"8"@"4"@"2" ]; //将前17位加权因子保存在数组里  
  27.         NSArray * idCardY=@[ @"1"@"0"@"10"@"9"@"8"@"7"@"6"@"5"@"4"@"3"@"2" ]; //这是除以11后,可能产生的11位余数、验证码,也保存成数组  
  28.         int idCardWiSum=0//用来保存前17位各自乖以加权因子后的总和  
  29.         for(int i=0;i<17;i++){  
  30.             idCardWiSum+=[[identityCard substringWithRange:NSMakeRange(i,1)] intValue]*[idCardWi[i] intValue];  
  31.         }  
  32.           
  33.         int idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置  
  34.         NSString *idCardLast=[identityCard substringWithRange:NSMakeRange(17,1)];//得到最后一位身份证号码  
  35.           
  36.         //如果等于2,则说明校验码是10,身份证号码最后一位应该是X  
  37.         if(idCardMod==2){  
  38.             if([idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]){  
  39.                 return YES;  
  40.             }else{  
  41.                 return NO;  
  42.             }  
  43.         }else{  
  44.             //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码  
  45.             if([idCardLast intValue]==[idCardY[idCardMod] intValue]){  
  46.                 return YES;  
  47.             }else{  
  48.                 return NO;  
  49.             }  
  50.         }  
  51.     }  
  52.     return NO;  
  53. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值