IOS常用正则表达式判断

举报
清雨小竹 发表于 2022/09/25 01:21:08 2022/09/25
【摘要】 //校验密码+(BOOL)checkPass:(NSString*)pass{ if(pass==nil) { return NO; } NSString *regex = @"^[A-Za-z0-9]+$"; NSPredicate *predicate = [NSPredicate pre...

  
  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. NSString *regex = @"(13[0-9]|14[57]|15[0123456789]|18[023456789])\\d{8}";
  16. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
  17. return [predicate evaluateWithObject:str];
  18. }
  19. //校验是否是数字
  20. +(BOOL)checkIsNumber:(NSString*)str
  21. {
  22. if(str==nil)
  23. {
  24. return NO;
  25. }
  26. 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]+$";
  27. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@ ", regex];
  28. return [predicate evaluateWithObject:str];
  29. }



  
  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. if(identityCard.length==18)
  24. {
  25. NSArray *idCardWi= @[ @"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2" ]; //将前17位加权因子保存在数组里
  26. NSArray * idCardY=@[ @"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2" ]; //这是除以11后,可能产生的11位余数、验证码,也保存成数组
  27. int idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和
  28. for(int i=0;i<17;i++){
  29. idCardWiSum+=[[identityCard substringWithRange:NSMakeRange(i,1)] intValue]*[idCardWi[i] intValue];
  30. }
  31. int idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置
  32. NSString *idCardLast=[identityCard substringWithRange:NSMakeRange(17,1)];//得到最后一位身份证号码
  33. //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
  34. if(idCardMod==2){
  35. if([idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]){
  36. return YES;
  37. }else{
  38. return NO;
  39. }
  40. }else{
  41. //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
  42. if([idCardLast intValue]==[idCardY[idCardMod] intValue]){
  43. return YES;
  44. }else{
  45. return NO;
  46. }
  47. }
  48. }
  49. return NO;
  50. }


文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。

原文链接:zzzili.blog.csdn.net/article/details/49391915

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。