iOS正则表达式

jopen 10年前

首先简单介绍一下正则表达式的基本写法及用法

\d 匹配任何一个数字,即[0-9]

\d+表示1个以上的数字

\d*标示0个或多个数字

\s 表示分隔符,包括空格、制表符和换行符

\s* 0个或多个分隔符

\w 表示字母、数字和下划线,这里还包括Unicode字符,不同的语言里有些不同

\w{4} 表示4个非空白字符

. 表示任何一个字符,不包括换行符

.* 表示任何多个字符,当然也不包括换行符了

^([0-9]) 表示数字开头

([0-9])$ 示数字结尾

([0-9A-Za-z]) 表示数字字母

| 表示或的关系,如\d|\w 示数字或字母

(.|[\r\n])* 表示任何多个字符,包括换行符,贪婪扫描

(.|[\r\n])*? 表示任何多个字符,包括换行符,懒惰扫描

(?:.|[\\r\\n])   以(?:开头时的分组信息,表示不读取到缓冲器里,避免rangeAtIndex调用时产生副作用,后面还会遇到这样的(?:写法

 

下面将自己写的一些通用的正则表达式函数罗列一下,以后后续参考

@implementation TSRegularExpressionUtil  //邮箱  + (BOOL) validateEmail:(NSString *)email  {      NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";      NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];      return [emailTest evaluateWithObject:email];  }  //手机号码验证  + (BOOL) validateMobile:(NSString *)mobile  {      //手机号以13, 15,18开头,八个 \d 数字字符      NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$";      NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];      return [phoneTest evaluateWithObject:mobile];  }  //车牌号验证  + (BOOL) validateCarNo:(NSString *)carNo  {      NSString *carRegex = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$";      NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex];      NSLog(@"carTest is %@",carTest);      return [carTest evaluateWithObject:carNo];  }  //车型  + (BOOL) validateCarType:(NSString *)CarType  {      NSString *CarTypeRegex = @"^[\u4E00-\u9FFF]+$";      NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CarTypeRegex];      return [carTest evaluateWithObject:CarType];  }  //用户名  + (BOOL) validateUserName:(NSString *)name  {      NSString *userNameRegex = @"^[A-Za-z0-9]{4,20}+$";      NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex];      BOOL B = [userNamePredicate evaluateWithObject:name];      return B;  }  //密码  + (BOOL) validatePassword:(NSString *)passWord  {      NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$";      NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex];      return [passWordPredicate evaluateWithObject:passWord];  }  //昵称  + (BOOL) validateNickname:(NSString *)nickname  {      NSString *nicknameRegex = @"([\u4e00-\u9fa5]{2,5})(&middot;[\u4e00-\u9fa5]{2,5})*";      NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex];      return [passWordPredicate evaluateWithObject:nickname];  }  //身份证号  + (BOOL) validateIdentityCard: (NSString *)identityCard  {      BOOL flag;      if (identityCard.length <= 0) {          flag = NO;          return flag;      }      NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";      NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];      return [identityCardPredicate evaluateWithObject:identityCard];  }  //银行卡  + (BOOL) validateBankCardNumber: (NSString *)bankCardNumber  {      BOOL flag;      if (bankCardNumber.length <= 0) {          flag = NO;          return flag;      }      NSString *regex2 = @"^(\\d{15,30})";      NSPredicate *bankCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];      return [bankCardPredicate evaluateWithObject:bankCardNumber];  }  //银行卡后四位  + (BOOL) validateBankCardLastNumber: (NSString *)bankCardNumber  {      BOOL flag;      if (bankCardNumber.length != 4) {          flag = NO;          return flag;      }      NSString *regex2 = @"^(\\d{4})";      NSPredicate *bankCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];      return [bankCardPredicate evaluateWithObject:bankCardNumber];  }  //CVN  + (BOOL) validateCVNCode: (NSString *)cvnCode  {      BOOL flag;      if (cvnCode.length <= 0) {          flag = NO;          return flag;      }      NSString *regex2 = @"^(\\d{3})";      NSPredicate *cvnCodePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];      return [cvnCodePredicate evaluateWithObject:cvnCode];  }  //month  + (BOOL) validateMonth: (NSString *)month  {      BOOL flag;      if (!month.length == 2) {          flag = NO;          return flag;      }      NSString *regex2 = @"(^(0)([0-9])$)|(^(1)([0-2])$)";      NSPredicate *monthPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];      return [monthPredicate evaluateWithObject:month];  }  //month  + (BOOL) validateYear: (NSString *)year  {      BOOL flag;      if (!year.length == 2) {          flag = NO;          return flag;      }      NSString *regex2 = @"^([1-3])([0-9])$";      NSPredicate *yearPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];      return [yearPredicate evaluateWithObject:year];  }  //verifyCode  + (BOOL) validateVerifyCode: (NSString *)verifyCode  {      BOOL flag;      if (!verifyCode.length == 6) {          flag = NO;          return flag;      }      NSString *regex2 = @"^(\\d{6})";      NSPredicate *verifyCodePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];      return [verifyCodePredicate evaluateWithObject:verifyCode];  }  @end