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

#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;
}

posted on 2017-06-23 09:59  ZOYOO  阅读(842)  评论(0编辑  收藏  举报