1. //邮箱
  2. + (BOOL) validateEmail:(NSString *)email
  3. {
  4. NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
  5. NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
  6. return [emailTest evaluateWithObject:email];
  7. }
  8. //手机号码验证
  9. + (BOOL) validateMobile:(NSString *)mobile
  10. {
  11. //手机号以13, 15,18开头,八个 \d 数字字符
  12. NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$";
  13. NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
  14. return [phoneTest evaluateWithObject:mobile];
  15. }
  16. //车牌号验证
  17. + (BOOL) validateCarNo:(NSString *)carNo
  18. {
  19. NSString *carRegex = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$";
  20. NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex];
  21. NSLog(@"carTest is %@",carTest);
  22. return [carTest evaluateWithObject:carNo];
  23. }
  24. //车型
  25. + (BOOL) validateCarType:(NSString *)CarType
  26. {
  27. NSString *CarTypeRegex = @"^[\u4E00-\u9FFF]+$";
  28. NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CarTypeRegex];
  29. return [carTest evaluateWithObject:CarType];
  30. }
  31. //用户名
  32. + (BOOL) validateUserName:(NSString *)name
  33. {
  34. NSString *userNameRegex = @"^[A-Za-z0-9]{6,20}+$";
  35. NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex];
  36. BOOL B = [userNamePredicate evaluateWithObject:name];
  37. return B;
  38. }
  39. //密码
  40. + (BOOL) validatePassword:(NSString *)passWord
  41. {
  42. NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$";
  43. NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex];
  44. return [passWordPredicate evaluateWithObject:passWord];
  45. }
  46. //昵称
  47. + (BOOL) validateNickname:(NSString *)nickname
  48. {
  49. NSString *nicknameRegex = @"^[\u4e00-\u9fa5]{4,8}$";
  50. NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex];
  51. return [passWordPredicate evaluateWithObject:nickname];
  52. }
  53. //身份证号
  54. + (BOOL) validateIdentityCard: (NSString *)identityCard
  55. {
  56. BOOL flag;
  57. if (identityCard.length <= 0) {
  58. flag = NO;
  59. return flag;
  60. }
  61. NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
  62. NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
  63. return [identityCardPredicate evaluateWithObject:identityCard];
  64. }

#pragma 正则匹配手机号

+ (BOOL)checkTelNumber:(NSString *) telNumber
{
    NSString *pattern = @^1+[3578]+\d{9};
    NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];
    BOOL isMatch = [pred evaluateWithObject:telNumber];
    return isMatch;
}
  
  
#pragma 正则匹配用户密码6-18位数字和字母组合
+ (BOOL)checkPassword:(NSString *) password
{
    NSString *pattern = @^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18};
    NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];
    BOOL isMatch = [pred evaluateWithObject:password];
    return isMatch;
      
}
  
#pragma 正则匹配用户姓名,20位的中文或英文
+ (BOOL)checkUserName : (NSString *) userName
{
    NSString *pattern = @^[a-zA-Z一-龥]{1,20};
    NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];
    BOOL isMatch = [pred evaluateWithObject:userName];
    return isMatch;
      
}
  
  
#pragma 正则匹配用户身份证号15或18位
+ (BOOL)checkUserIdCard: (NSString *) idCard
{
    NSString *pattern = @(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$);
    NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];
    BOOL isMatch = [pred evaluateWithObject:idCard];
    return isMatch;
}
  
#pragma 正则匹员工号,12位的数字
+ (BOOL)checkEmployeeNumber : (NSString *) number
{
    NSString *pattern = @^[0-9]{12};
      
    NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];
    BOOL isMatch = [pred evaluateWithObject:number];
    return isMatch;
      
}
  
#pragma 正则匹配URL
+ (BOOL)checkURL : (NSString *) url
{
    NSString *pattern = @^[0-9A-Za-z]{1,50};
    NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern];
    BOOL isMatch = [pred evaluateWithObject:url];
    return isMatch;
      
}
 

/**
* 功能:验证身份证是否合法
* 参数:输入的身份证号
*/
- (BOOL)isValidPersonID {
// 判断位数
if (self.length != 15 && self.length != 18) {
return NO;
}
NSString *carid = self;
long lSumQT = 0;
// 加权因子
int R[] ={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
// 校验码
unsigned char sChecker[11]={'1','0','X', '9', '8', '7', '6', '5', '4', '3', '2'};

// 将15位身份证号转换成18位
NSMutableString *mString = [NSMutableString stringWithString:self];
if (self.length == 15) {
[mString insertString:@"19" atIndex:6];
long p = 0;
const char *pid = [mString UTF8String];

for (int i = 0; i<= 16; i++) {
p += (pid[i] - 48) * R[i];
}

int o = p % 11;
NSString *string_content = [NSString stringWithFormat:@"%c", sChecker[o]];
[mString insertString:string_content atIndex:[mString length]];
carid = mString;
}

// 判断地区码
NSString * sProvince = [carid substringToIndex:2];
if (![self areaCode:sProvince]) {
return NO;
}

// 判断年月日是否有效
// 年份
int strYear = [[self substringWithString:carid begin:6 end:4] intValue];
// 月份
int strMonth = [[self substringWithString:carid begin:10 end:2] intValue];
// 日
int strDay = [[self substringWithString:carid begin:12 end:2] intValue];

NSTimeZone *localZone = [NSTimeZone localTimeZone];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeZone:localZone];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date=[dateFormatter dateFromString:[NSString stringWithFormat:@"%d-%d-%d 12:01:01",
strYear, strMonth, strDay]];
if (date == nil) {
return NO;
}

const char *PaperId = [carid UTF8String];
// 检验长度
if(18 != strlen(PaperId)) return NO;
// 校验数字
for (int i = 0; i < 18; i++) {
if ( !isdigit(PaperId[i]) && !(('X' == PaperId[i] || 'x' == PaperId[i]) && 17 == i) ) {
return NO;
}
}

// 验证最末的校验码
for (int i=0; i<=16; i++) {
lSumQT += (PaperId[i]-48) * R[i];
}

if (sChecker[lSumQT%11] != PaperId[17] ) {
return NO;
}
return YES;
}

iOS - 正则表达式判断邮箱、身份证,车牌,URL等..是否正确:的更多相关文章

  1. iOS - 正则表达式判断邮箱、身份证..是否正确:

    iOS - 正则表达式判断邮箱.身份证..是否正确: //邮箱 + (BOOL) validateEmail:(NSString *)email {     NSString *emailRegex ...

  2. iOS 正则表达式判断邮箱、身份证..是否正确

    //邮箱 + (BOOL) validateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Z ...

  3. iOS 正则表达式-判断邮箱、手机号

    判断是否是邮箱 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[ ...

  4. iOS开发——判断邮箱格式

    //判断邮箱格式 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@ ...

  5. ORACLE中使用SQL的正则表达式判断邮箱格式

    在数据库中,有时需要判断字符串是否是一个或者多个邮箱格式,可以使用如下语句判断: ) FROM dual WHERE regexp_like(v_mail,'^\w+((-\w+)|(\.\w+))* ...

  6. 31、iOS 正则表达式判断UITextField是否为全汉字,全字母,全数字,数字和字母

    判断全汉字 if ([self deptNameInputShouldChinese]) { [DemonAlertHelper showToastWithMessage:@"只能是中文&q ...

  7. [Xcode 实际操作]九、实用进阶-(5)使用正则表达式判断格式是否正确

    目录:[Swift]Xcode实际操作 本文将演示使用正则表达式判断邮箱的格式是否正确. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit ...

  8. iOS:判断用户名是否以字母开头、手机号输入、邮箱是否正确的正则表达式

    新建一个字符串分类:NSString(Check),定义类方法更方便 .h文件 #import <Foundation/Foundation.h> @interface NSString ...

  9. Android之利用正则表达式校验邮箱、手机号、密码、身份证号码等

    概述 现在Android应用在注册的时候基本会校验邮箱.手机号.密码.身份证号码其中一项或多项,特此收集了相关的正则表达式给大家分享.除了正则表达式,文章末尾提供Demo中有惊喜哦! 具体验证的图片效 ...

随机推荐

  1. Live Score FAQ

    Q: Why doesn't the selected game go to top? A: The game which include your favorite team will be alw ...

  2. 配置ssh秘钥登陆

    环境2台linux服务器:node1 192.168.X.234                               node2 192.168.X.242 演示用node1无密码登陆node ...

  3. think in java

    1.public private protected

  4. 回文树 Palindromic Tree

    回文树 Palindromic Tree 嗯..回文树是个什么东西呢. 回文树(或者说是回文自动机)每个节点代表一个本质不同的回文串. 首先它类似字典树,每个节点有SIGMA个儿子,表示对应的字母. ...

  5. jQuery编程规范与最佳实践(附带一些个人的笔记)

    加载jQuery-Loading jQuery 1.坚持使用CDN来加载jQuery,这种别人服务器免费帮你托管文件的便宜干嘛不占呢.点击查看使用CDN的好处,点此查看一些主流的jQuery CDN地 ...

  6. $.extendGit 丢弃所有本地修改的方法

    git checkout . #本地所有修改的.没有的提交的,都返回到原来的状态 git stash #把所有没有提交的修改暂存到stash里面.可用git stash pop回复. git rese ...

  7. jquery.chosen.js下拉选择框美化插件项目实例

    由于之前使用的bootstrap-select插件是建立在bootstrap基础上的,实际使用到项目中的时候,与我们使用的ace-admin(基于bootstrap)存在样式冲突,导致下拉框的样式发生 ...

  8. 【转】由浅入深探究mysql索引结构原理、性能分析与优化

    摘要: 第一部分:基础知识 第二部分:MYISAM和INNODB索引结构 1.简单介绍B-tree B+ tree树 2.MyisAM索引结构 3.Annode索引结构 4.MyisAM索引与Inno ...

  9. pip 批量更新

    1. pip3 list --outdated >> requests  现将要更新的列表写入requests 2.对文件中的数据进行处理 Package        Version   ...

  10. js打乱数组的实战应用

    文章首发于: https://www.xiabingbao.com/post/javascript/js-random-array.html 在js中,能把数组随机打乱的方法有很多,每个方法都有自己的 ...